如果满足条件,在数组上添加额外的键和值


Add additional key and value on arrays if condition is met

Array(
    Array(
          [name] => John
          [last] => Smith
          [status] => sent
         )
    Array(
          [name] => Jane
          [last] => Doe
          [status] => pending
         )
    Array(
          [name] => Kripky
          [last] => Woe
          [status] => pending
         )
)
代码:

   $arr = array();
   foreach ($res as $key => $value) {
        if($value['status'] == 'sent'){
            $arr[] = array($value, $value['dupe'] = 1); 
        }
    }

如果数组上有一个status = sent,如何在所有数组上添加$value['dupe'] = 1

预期结果:

Array(
    Array(
          [name] => John
          [last] => Smith
          [status] => sent
          [dupe] => 1
         )
    Array(
          [name] => Jane
          [last] => Doe
          [status] => pending
          [dupe] => 1
         )
    Array(
          [name] => Kripky
          [last] => Woe
          [status] => pending
          [dupe] => 1
         )
)

这个循环应该为你做:

foreach ($a as $i) {
    if ($i['status'] == 'sent') {
        foreach ($a as &$_i) {
            $_i['dupe'] = 1;
        }
    }
}

Example Demo


注意:这个使用变量引用(&),所以它会更新实际的数组。

这段代码可能会对您有所帮助

// first, define a function that tells if there is a statut = sent
function statut_exist($arr)
{
    foreach ($arr as $value) 
        if($value['status'] == 'sent')
          return true;
    return false;
}
// then add the dupe if there is a statut = sent
if(statut_exist())
    foreach ($res as $value) 
        $value['dupe'] = 1