我有这段代码:
...............................................
'Detalle' => array()
];
foreach ($cart as $line => $item) {
//check condition
if (strtolower($item['description']) === 'something') {
$cond = true;
} else {
$cond= false;
}
$ab['Detalle'][]=array(
'NmbItem' => $item['name'],
'QtyItem' => (int)$item['quantity'],
'PrcItem' => $item['price']
);
if ($cond){
$array2 = array('IndExe' => 1);
array_merge($ab['Detalle'],$array2);
}
}
如果条件为真,我怎样才能将'IndExe'添加到$ab['Detalle']
数组?我尝试了array_merge,array_merge_recursive但没有。
IndExe只能为1,另一个值如0或null是不可能的。我试过了:
$ab['Detalle'][]=array(
'NmbItem' => $item['name'],
'QtyItem' => (int)$item['quantity'],
'PrcItem' => $item['price']
'IndExe' => ($cond? 1 : 0 )
);
但是cond = false
然后IndExe = 0
,不是我需要的。只有在cond = true
时才能添加IndExe。
答案 0 :(得分:3)
让我们介绍一个临时数组:
$tempArray=Array(
'NmbItem' => $item['name'],
'QtyItem' => (int)$item['quantity'],
'PrcItem' => $item['price']
);
if ($cond){
$tempArray['IndExe'] = 1;
}
$ab['Detalle'][] = $tempArray;
答案 1 :(得分:0)
问题是动态附加的[]
元素。您可以使用索引$line
:
foreach ($cart as $line => $item) {
$ab['Detalle'][$line] = array(
'NmbItem' => $item['name'],
'QtyItem' => (int)$item['quantity'],
'PrcItem' => $item['price']
);
if (strtolower($item['description']) === 'something') {
$ab['Detalle'][$line]['IndExe'] = 1;
}
}
如果$line
没有给出你想要的索引(但它们无关紧要),那么:
$ab['Detalle'] = array_values($ab['Detalle']);
除非您稍后在代码中再次使用$cond
,否则您不需要它。