foreachの中で生成した配列を結合させたいのですが、
以下のようにすると上書きされてしまい、最後の配列のみが残ります。
###試したソースコード
$r=0; $lines_array = array(); foreach ($access as $access_val) { $line_list_array[$r] = line_list($access_val); //line_listはユーザー定義関数で配列を作っています。 $lines_array += $line_list_array[$r][0]; $r++; } print_r($lines_array);// Array ( [0] => line99303 [1] => 9930221 );
下記のような配列が入っているとした場合、
(実際には$access_valの値や数によって変動します。)
$line_list_array[0][0] = Array ( [0] => line99301 [1] => 9930118 );
$line_list_array[1][0] = Array ( [0] => line99302 [1] => 9930220 );
$line_list_array[2][0] = Array ( [0] => line99303 [1] => 9930221 );
下記のような結果を期待しているのですが思ったようになりませんでした。
$line_list_array = Array ( [0] => line99301 [1] => 9930118 [2] => line99302 [3] => 9930220 [4] => line99303 [5] => 9930221 );
恐れ入りますが、アドバイス頂ければ幸いです。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
素直に書くならこうですかね。
$r=0; $lines_array = array(); foreach ($access as $access_val) { $line_list_array[$r] = line_list($access_val); foreach ($line_list_array[$r][0] as $line) { $lines_array[] = $line; } $r++; }
投稿2017/02/23 05:33
編集2017/02/23 05:35総合スコア7914
0
ベストアンサー
php
1// $r=0; 2$lines_array = array(); 3foreach ($access as $access_val) { 4 // $line_list_array[$r] = line_list($access_val); //line_listはユーザー定義関数で配列を作っています。 5 // $lines_array += $line_list_array[$r][0]; 6 // $r++; 7 8 $lines_array = array_merge($lines_array, line_list($access_val)[0]); 9}
実行結果
php
1$access = array(0, 1, 2); 2 3function line_list($access_val) { 4 $data = array( 5 array('line99301', '9930118'), 6 array('line99302', '9930220'), 7 array('line99303', '9930221'), 8 ); 9 return array($data[$access_val]); 10} 11 12/* ------------------------------------------------------- */ 13 14// $r=0; 15$lines_array = array(); 16foreach ($access as $access_val) { 17 // $line_list_array[$r] = line_list($access_val); //line_listはユーザー定義関数で配列を作っています。 18 // $lines_array += $line_list_array[$r][0]; 19 // $r++; 20 21 $lines_array = array_merge($lines_array, line_list($access_val)[0]); 22} 23 24print_r($lines_array);
Array ( [0] => line99301 [1] => 9930118 [2] => line99302 [3] => 9930220 [4] => line99303 [5] => 9930221 )
投稿2017/02/23 06:01
総合スコア4791
0
PHP
1 foreach ($access as $access_val) { 2 $line_list_array[$r] = line_list($access_val); //line_listはユーザー定義関数で配列を作っています。 3 $lines_array[] = $line_list_array[$r][0]; 4 $r++;
じゃないでしょうか。
改修
PHP
1 foreach ($access as $access_val) { 2 $line_list_array[$r] = line_list($access_val); //line_listはユーザー定義関数で配列を作っています。 3 foreach($line_list_array[$r][0] as $data) { 4 $lines_array[] = $data; 5 } 6 $r++;
ですかね、もとの意図に沿うならば。
投稿2017/02/23 05:03
編集2017/02/23 05:37総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんな感じでしょうか。
PHP
1$r=0; 2$lines_array = array(); 3foreach ($access as $access_val) { 4 $line_list_array[$r] = line_list($access_val); 5 foreach(array_values($line_list_array[$r]) as $v){ 6 $lines_array[] = $v; 7 } 8 $r++; 9} 10 11print_r($lines_array);
投稿2017/02/23 05:39
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/23 06:03
2017/02/23 06:16 編集
2017/02/23 06:10
2017/02/23 06:15
2017/02/23 06:32
2017/02/23 06:44
2017/02/23 06:46
2017/02/23 06:52
2017/02/23 07:04
2017/02/23 07:48
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/23 07:48