PHP 配列内の最後に挿入された項目のインデックスを取得する 質問する

PHP 配列内の最後に挿入された項目のインデックスを取得する 質問する

タイトルからわかるように簡単です。最後に挿入された項目のインデックス/キーを取得する必要があります。なぜこれが難しいのでしょうか? 次の 2 つのコード サンプルを参照してください。

$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>');

書き込み:

res=aaa - 0
res=bbb - 1
res=aaa - 2
Array (
    [0] => aaa
    [1] => bbb
    [2] => aaa
)

確かに、それはうまく機能しているようですが、次の点に注意してください。

$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>');

書き込み:

res=aaa - 0
res=bbb - 1       <- wrong!
res=aaa - 2       <- wrong!
Array (
    [0] => aaa
    [2] => bbb    <- real key
    [3] => aaa    <- real key
)

つまり、簡単に言えば、一般的な回避策にはcount($array)-1欠陥があるということです。

ベストアンサー1

がここにあります線形最速) 解決:

end($a);
$last_id=key($a);

おすすめ記事