配列キーを0ではなく1から開始するように変更する方法 [重複] 質問する

配列キーを0ではなく1から開始するように変更する方法 [重複] 質問する

いくつかの配列に値があり、最初の値キーが0ではなく1になるように配列全体のインデックスを再設定したい。

PHPのデフォルトでは配列のキーは0から始まります。つまり0 => a, 1=> b、配列全体をキー=1から始まるように再インデックスしたいのです。1=> a, 2=> b, ....

ベストアンサー1

$alphabet = array("a", "b", "c");
array_unshift($alphabet, "phoney");
unset($alphabet[0]);

編集: このトピックで提案されている他のソリューションとこのソリューションをベンチマークしてみることにしました。私が使用した非常にシンプルなコードは次のとおりです。

$start = microtime(1);
for ($a = 0; $a < 1000; ++$a) {
    $alphabet = array("a", "b", "c");
    array_unshift($alphabet, "phoney");
    unset($alphabet[0]);
}
echo (microtime(1) - $start) . "\n";


$start = microtime(1);
for ($a = 0; $a < 1000; ++$a) {
    $stack = array('a', 'b', 'c');
    $i= 1;
    $stack2 = array();
    foreach($stack as $value){
        $stack2[$i] = $value;
        $i++;
    }
    $stack = $stack2;
}
echo (microtime(1) - $start) . "\n";


$start = microtime(1);
for ($a = 0; $a < 1000; ++$a) {
    $array = array('a','b','c');

    $array = array_combine(
        array_map(function($a){
            return $a + 1;
        }, array_keys($array)),
        array_values($array)
    );
}
echo (microtime(1) - $start) . "\n";

出力は次のようになります。

0.0018711090087891
0.0021598339080811
0.0075368881225586

おすすめ記事