MENU

PHPで、配列の歯抜けを詰めたい!で痛感した柔軟な思考について。

いやぁー痛感しました。

Array
(
    [0] => ルフィ
    [1] => ゾロ
    [4] => ウソップ
    [7] => ナミ
)

てな配列があって、これを

Array
(
    [0] => ルフィ
    [1] => ゾロ
    [2] => ウソップ
    [3] => ナミ
)

ってな感じに詰めたかっただけなんですよ。PHPならそれっぽい配列関数がありそうだけど無かったから、面倒だけど

$from = array(0 => 'ルフィ', 1 => 'ゾロ', 4 => 'ウソップ', 7 => 'ナミ');
$to = array();

$i = 0;
foreach ($from as $tmp) $to[$i++] = $tmp;

ってやってたわけですよ。

でもね。でもね。ぜーーーったいもっと楽チンな方法はあるはずやん!って思って調べてみたですよ。

そしたらね。こちらのコメントにすばらしいアイデアがありましたよ。

$ary2 = array_merge($ary1);
print_r($ary1);
print_r($ary2);

のほうがよくない?

って。

なーるーほーどー(the world)

そもそも、array_merge()って関数は、配列1と配列2の配列をマージするってモノですよ。そもそも最適化するってモノではないのですよ。

けど、このアイデアをくれたhogeさんは、PHPマニュアルのarray_mergeの説明にある、

入力配列の中にある数値添字要素の添字の数値は、 結果の配列ではゼロから始まる連続した数値に置き換えられます。

という部分を利用したんですよね。

「この機能は○○するものである」という部分だけに注目しちゃダメなんですねー。いやぁ参考になりました。