我试图用以下方式从三个数组中创建一个数组:
$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)
表示其他数组中的所有行。
答案 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_map
和array_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);