我的数据如下
<?php
$cart = array(
'c' => array(
array(
'Cart' => array('course_type_quantity' => 3),
'c' => array(
'id' => 2152,
'name' => 'Product1',
'duration' => 5,
'image' => 'IMG-2152.png',
'exams' => '606,652',
'exam' => 0
)
),
array(
'Cart' => array('course_type_quantity' => 3),
'c' => array(
'id' => 2152,
'name' => 'Product2',
'duration' => 5,
'image' => 'IMG-2153.png',
'exams' => '607,653',
'exam' => 0
)
)
)
);
?>
现在我想要来自上面数组的数据:
<?php
$exams => array(
606 => 'Product1',
652 => 'Product1',
607 => 'Product2',
653 => 'Product2',
);
?>
我的代码
foreach($data['c'] as $r){
if($r['c']['exam']==0){
$id = explode(',',$r['c']['exams']);
for($i=0;$i<(count($id));$i++){
$data['exams'][$id[$i]] = $r['c']['name'];
$ids[] = $id[$i];
}
}
}
哪个没有任何错误......
但我不想要嵌套循环。因为这只是这个功能的一段代码,所以我在之前和之后都写过。
请为此建议任何简短代码......
由于
答案 0 :(得分:0)
您可以使用array_reduce
汇总数组。您可以使用array_combine
和array_fill
$cart = array(...); //Your array
$exams = array_reduce($cart['c'], function($c, $v){
$e = explode(',',$v['c']['exams']);
return $c + array_combine($e,array_fill(0,count($e), $v['c']['name']));
}, array());
这将导致:
Array
(
[606] => Product1
[652] => Product1
[607] => Product2
[653] => Product2
)