是否可以从数组中删除数组?这就是数组的外观...
[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);
}
答案 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]);
}