我想组合多个数组以形成特定格式。
$fieldArray=[];
$fieldArray['field_val']['key_1']=array('1');
$fieldArray['field_val']['key_2']=array('1','2','3','4');
$fieldArray['field_val']['key_3']=array('5','6','7','8');
$fieldArray['field_val']['key_4']=array('9','10','11','12');
$fieldArray['field_val']['key_5']=array('30');
结果应该是
1,1,5,9,30
1,2,6,10,30
...and so on
我尝试了以下代码。但这不能给我正确的结果。
echo '<pre>';
$i=0;
$newArray=[];
foreach($fieldArray['field_val'] as $key=>$values){
if($i==0){
$orderId=$values[0];
}
array_unshift($values,$orderId);
$newArray[]=$values;
$i++;
}
array_shift($newArray);
array_pop($newArray);
print_r($newArray);
我需要以下输出。
1,1,5,9,30
1,2,6,10,30 and so on
答案 0 :(得分:2)
检查一下此输出,如我所见,您有点转置数组。 我首先换位并为您的要求写了一个代码段。
Up
注意:必须具有初始索引中的数据。
说明:
编辑
$temp = array_map(null, ...$fieldArray['field_val']); // transposing array
foreach ($temp as $key => &$value) {
foreach ($value as $key1 => &$value1) {
// checking if empty
if(empty($value1)){
// fetching key1 value from first array and
// mapping it to empty values for all other arrays except first
$value1 = $temp[0][$key1];
}
}
}
echo implode("\n", array_map(function ($value) { // replace with br if web
return implode(",", $value);
}, $temp));