20119


二つの配列をmergeして、sumItemの値を(Item)の位置にいれてループさせたいです。  
以下のforeach文でsumProductは出せるのですが、sumItemを出そうとすると失敗します。  
どのように記述すれば$merge[1]の部分が以下のループ内で出てくるでしょうか？

[code]

    <?php 
    $arrA = array($t);
    $arrB = array($i); 
    $merge = array_merge_recursive($arrA, $arrB);
    //debug($merge);?>
    
    <?php foreach ($merge[0] as $m): ?>
        <tr>
          <td><?php echo $m['User']['id']; ?></td>
          <td> (Item) </td>
          <td><?php echo $m[0]['sumProduct']; ?></td>
       </tr>
    <?php endforeach; ?>
    
    array(
        (int) 0 => array(
            (int) 0 => array(
                'User' => array(
                    'id' => '1'
                ),
                (int) 0 => array(
                    'sumProduct' => '1'
                )
            ),
            (int) 1 => array(
                'User' => array(
                    'id' => '2'
                ),
                (int) 0 => array(
                    'sumProduct' => '2'
                )
            )
        ),
        (int) 1 => array(
            (int) 0 => array(
                'User' => array(
                    'id' => '1'
                ),
                (int) 0 => array(
                    'sumItem' => '12'
                )
            ),
            (int) 1 => array(
                'User' => array(
                    'id' => '2'
                ),
                (int) 0 => array(
                    'sumItem' => '2'
                )
            )
        )
     )
    
[/code]


CC BY-SA 3.0
2015-12-17T08:31:42.953
20107
2015-12-17T12:19:34.390
2015-12-17T08:40:39.337
10980
10980
question
php
PHPの連想配列をループさせる方法


現状の `$t` `$i` の構造では array_merge_recursive を使う甲斐は薄いので

  * どちらかの要素数を数えてforでループを回し、それぞれの配列にアクセスする
  * `foreach($t as $key => $val)` といった形で配列のキーを取り出しながらループを回し、もう一方にアクセスするのに使う

といった方法がわかりやすいかと思います。

後者の方法を使えば、`$merge[1]` を参照することもできますが・・・

[code]

    <?php foreach ($merge[0] as $key => $m): ?>
        <tr>
          <td><?php echo $m['User']['id']; ?></td>
          <td> <?php echo $merge[1][$key][0]['sumProduct']; ?></td>
          <td><?php echo $m[0]['sumProduct']; ?></td>
       </tr>
    <?php endforeach; ?>
    
[/code]

これならマージせずに元の配列のままでいいですよね。


CC BY-SA 3.0
2015-12-17T12:19:34.390
20119
2015-12-17T12:19:34.390
8000
20107
answer