从未设置的多维数组中删除数组

时间:2018-09-13 17:49:27

标签: php arrays

是否可以从数组中删除数组?这就是数组的外观...

[1042] => Array
    (
        [contact_name] => XXX
        [email] => 
        [id] => XXX
    )

[1043] => Array
    (
        [contact_name] => XXX
        [email] => XXX
        [id] => XXX
    )

代码...

foreach($contacts as &$contact){

    if(empty($contact['email']) || $contact['email'] == '')
        unset($contact);

}

4 个答案:

答案 0 :(得分:1)

使用数组键而不是引用是可能的。

foreach($contacts as $key => $contact){
    if(empty($contact['email']))
        unset($contacts[$key]);
}

我还删除了$contact['email] == '',因为empty()-选中项也覆盖了空(!)字符串。

注意:通常,请避免与foreach一起使用引用。使用它们很容易导致不良的副作用。

答案 1 :(得分:0)

在定义foreach循环时使用键和值对。

知道要设置的值的键(在本例中为子数组),可以按以下方式进行操作:

foreach($contacts as $key => $contact {
     if(empty($contact['email']) || $contact['email'] == '') {
        unset($contacts[$key]);
    }
}

答案 2 :(得分:0)

您似乎想过滤掉email字段中没有值的项目,如果是这种情况,请使用PHP的array_filter方法:

$filtered = array_filter($array, function($contact) {
    if(!empty($contact['email']) && $contact['email'] != '') {
        return $contact;
    }
});

提琴:Live Demo

答案 3 :(得分:0)

必须执行传统的for循环并使用索引删除。无法通过foreach循环完成。

修改

 // this is the code that worded
for($i = 0; $i <= count($other_array); $i++){
    if( !array_key_exists( "testing", $other_array[$i] ) )
        unset($other_array[$i]);
}