PHP仅在条件为真时才将元素添加到数组

时间:2018-03-15 22:25:14

标签: php arrays

我有这段代码:

...............................................
               '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。

2 个答案:

答案 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,否则您不需要它。