3

次のことを行うためのより良い方法はありますか?

$array = array('test1', 'test2', 'test3', 'test4', 'test5');
// do a bunch of other stuff, probably a loop
$array[] = 'test6';
end($array);
echo key($array); // gives me 6

これにより、最後に追加された配列要素のキーが提供されます。

これを行うためのより良い方法はありますか?

4

4 に答える 4

7

次のこともできます。

$end = end(array_keys($array));

しかし、私はあなたのやり方があなたが何をしたいのかを明確にしていると思うので、あなたは次のように何かをかき立てることができます:

function array_last_key($array) {
    end($array);
    return key($array);
}

それについてです。

于 2008-10-19T05:14:31.587 に答える
0

PHPにはこれに特別な機能はないので、あなたのやり方がこれを行う最も効率的な方法だと思います。読みやすくするために、array_last_key()のような関数に入れたいと思うかもしれません。

于 2008-10-19T05:15:03.550 に答える
0

配列に数値以外のキーがなく、キーを削除しないことが保証できる場合、配列のキーに追加される最後の要素は次のようになります。

$last_added = count($array)-1;

最後に追加されたキーを追跡する必要がある場合は、一意であることが保証されている独自のキーを作成するためのスキームを作成することをお勧めします。このようにして、生成してから常に最新の追加されたキーを取得できます。

$array = array('test1', 'test2', 'test3', 'test4', 'test5');
// do a bunch of other stuff, probably a loop
$new_key = generate_key();
$array[$new_key] = 'test6';
echo $new_key; // gives me blahblahfoobar123
于 2008-10-19T06:12:49.550 に答える
0

簡単に言えばいいえ。エンドとキーの両方が Big O(1) 時間です。他の方法では、コードが遅くなり、複雑さが増します。

于 2008-10-20T18:05:35.120 に答える