Es ist so einfach wie der Titel klingt; Ich muss den Index/Schlüssel des zuletzt eingefügten Artikels bekommen. Warum ist das schwierig? Auch die folgenden zwei Codebeispiele:PHP Index des zuletzt eingefügten Elements in Array erhalten
$a=array();
echo 'res='.($a[]='aaa').' - '.(count($a)-1).'<br>';
echo 'res='.($a[]='bbb').' - '.(count($a)-1).'<br>';
echo 'res='.($a[]='aaa').' - '.(count($a)-1).'<br>';
die('<pre>'.print_r($a,true).'</pre>');
Schreibt:
res=aaa - 0
res=bbb - 1
res=aaa - 2
Array (
[0] => aaa
[1] => bbb
[2] => aaa
)
Sicher, das scheint gut zu funktionieren, aber sehen:
$a=array();
echo 'res='.($a[]='aaa').' - '.(count($a)-1).'<br>';
echo 'res='.($a[2]='bbb').' - '.(count($a)-1).'<br>';
echo 'res='.($a[]='aaa').' - '.(count($a)-1).'<br>';
die('<pre>'.print_r($a,true).'</pre>');
Schreibt:
res=aaa - 0
res=bbb - 1 <- wrong!
res=aaa - 2 <- wrong!
Array (
[0] => aaa
[2] => bbb <- real key
[3] => aaa <- real key
)
Kurz gesagt, die beliebte Problemumgehung count($array)-1
ist fehlerhaft.
Dies ist in der Tat schneller. – Christian
Schöne! Ist 'end ($)' notwendig, wenn Sie '[]' verwenden? Ich habe bemerkt, dass es auch ohne es funktioniert –
Leider ist es das. Ein einfacher Test zeigt, dass die '$ array [] = $ value;' Operation den internen Zeiger des Arrays nicht am Ende davon setzt bleibt bei der letzten 'reset',' next', 'end' oder ähnlichen Operation gesetzt oder an der Position 0 wenn es ein neues Array mit neuen Werten ist – SWilk