我想结合多个数组来制作特定的format。
$fieldArray=[];
$fieldArray['field_val']['1']=array('1');
$fieldArray['field_val']['2']=array('1','2','3','4');
$fieldArray['field_val']['3']=array('5','6','7','8');
$fieldArray['field_val']['4']=array('9','10','11','12');
$fieldArray['field_val']['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);
我需要以下output。
1,1,5,9,30
1,2,6,10,30 and so on
分析解答
一旦检查了output,我可以看到,你有点转置阵列。 我首先转换并为您的要求写了一个片段。
$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));
Note: Must have data from the initial index.
说明:
- 请看这链接我如何转置它,
- 然后我把第一个数组作为我的基础数组来玩其他值
- 然后我使用其他值与空值映射第一个和最后一个值。