数组具有数组和非数组元素

时间:2019-07-08 15:58:40

标签: php arrays

我有一个像这样的数组

$data = array(
'class'=>'1',
'class_section'=>array('a','b','c'),
'class_fee'=>'500');

我希望这个数组成为

$data = array(
array('class'=>'1', 'class_section'=>'a', 'class_fee'=>500),
array('class'=>'1', 'class_section'=>'b', 'class_fee'=>500),
array('class'=>'1', 'class_section'=>'c', 'class_fee'=>500)
);

我希望这个数组成为

$data = array(
array('class'=>'1', 'section'=>'a', 'fee'=>500),
array('class'=>'1', 'section'=>'b', 'fee'=>500),
array('class'=>'1', 'section'=>'c', 'fee'=>500)
);

2 个答案:

答案 0 :(得分:1)

您可以使用foreach来做到:

$data = [
    'class'=>'1',
    'class_section'=> ['a','b','c'],
    'class_fee'=>'500'
];

$newArray = [];
foreach($data['class_section'] as $section) {
    $newArray[] = [
        'class' => $data['class'],
        'section' => $section,
        'fee' => $data['class_fee']
    ];
}

答案 1 :(得分:0)

您可以通过许多不同的方法来完成它。一种使用foreach()循环的方法,

<?php
$data = array(
'class'=>'1',
'class_section'=>array('a','b','c'),
'class_fee'=>'500'
);

$len = count($data);
for($i=0;$i<$len;$i++){
 foreach($data as $k=>$v){
    if(is_array($v)){
        $result[$i][$k] = $v[$i];
    }else{
        $result[$i][$k] = $v;
    }
 }
}
print_r($result);
?>

工作演示https://3v4l.org/N4YvD