来自多个foreach循环的新数组

时间:2012-01-27 07:24:29

标签: php arrays

我试图用以下方式从三个数组中创建一个数组:

    $file_data = array();

    foreach($file_ids as $key => $id){
       foreach($file_names as $name_key => $name){
          foreach($file_amounts as $file_key => $cost){
             $file_data[] = array("id" => $id, "filename" => $name, "amount" => $cost);
             break;
         }
         break;
      }

   }

它只创建了第一行。如何才能将值正确地分配给$ file_data数组?

感谢。

更新: 举个例子,我对三个数组有以下内容

    $file_ids[0] = 2;
    $file_ids[1] = 4;

    $file_name[0] = name1;
    $file_name[1] = name2;

    $file_amount[0] = 10;
    $file_amount[1] = 9;

这些数组的大小始终相同。

我想要做的是遍历这些数组并最终获得表单的最终数组:

$final_array = (id, name, amount)

表示其他数组中的所有行。

3 个答案:

答案 0 :(得分:2)

  

这些数组的大小始终相同。

只需循环到任一数组的宽度:

$final_array = array();
for($i = 0; $i < count($file_name); $i++)
{
    $final_array[] = array($file_ids[$i],$file_name[$i],$file_amount[$i]);
}

答案 1 :(得分:0)

利用array_maparray_combine

$file_ids = array(2, 4);
$file_name = array('name1', 'name2');
$file_amount = array(10, 9);

$result = array_map(null, $file_ids, $file_name, $file_amount);

$keys = array('id', 'filename', 'ammount');
$result = array_map(function($el) use ($keys) {
    return array_combine($keys, $el);
}, $result);

echo '<pre>'; print_r($result); echo '</pre>';

输出:

Array
(
    [0] => Array
        (
            [id] => 2
            [filename] => name1
            [ammount] => 10
        )

    [1] => Array
        (
            [id] => 4
            [filename] => name2
            [ammount] => 9
        )
)

答案 2 :(得分:0)

仅迭代一个数组

$file_ids = array(2,4);
$file_name = array('name1', 'name2');
$file_amount = array(10,9);

$cnt = count($file_ids);

$file_data = array();
for($i = 0; $i < $cnt; $i++){
    $file_data[] = array('id' => $file_ids[$i],
                     'filename' => $file_name[$i],
                     'amount' => $file_amount[$i]);
}

var_dump($file_data);