Hatena::ブログ(Diary)

Webエンジニアの技術メモ 〜PHP、SQL、Linuxなど〜

2008-12-08

歯抜けになった配列を詰める

| 01:19

これで左から右へ、インデックスがきれいに並びます

foreach ($ary1 as $ary2[]){}

<?php
$ary1 = array(0=>'a', 3=>'b', 4=>'c', 6=>'d', 9=>'e');
print_r($ary1);  // Array ( [0] => a [3] => b [4] => c [6] => d [9] => e ) 
echo '<br />';
// 要素を詰めて格納
foreach ($ary1 as $ary2[]){}
print_r($ary2);  // Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) 

失敗例)

同じ変数同士で foreach ($ary1 as $ary1[]){}とすると、さらに後ろに追加されてしまいます

<?php
foreach ($ary1 as $ary1[]){}
print_r($ary1);  // Array ( [0] => a [3] => b [4] => c [6] => d [9] => e [10] => a [11] => b [12] => c [13] => d [14] => e ) 

追記:

これが一番スマートそうですね。

array_merge($ary1)
[user@system ~]$ php -a
Interactive shell

php > print_r(array_merge(array(1=>'hoge', 3=>'fuga', 9=>'piyo')));
Array
(
    [0] => hoge
    [1] => fuga
    [2] => piyo
)

hogehoge 2009/08/26 14:17 $ary2 = array_merge($ary1);
print_r($ary1);
print_r($ary2);

のほうがよくない?

moroto1122moroto1122 2009/10/13 14:55 >hogeさん
たしかに、ただ詰めるだけならarray_merge()使えば良いですね。
ありがとうございます!

トラックバック - http://d.hatena.ne.jp/moroto1122/20081208/1228666759