我有一个简单的数组,其中包含所有国家/地区的名称以及每个国家/地区在我的网站上注册的用户总数。它是这样的:
Array (
[1] => Array ( [name] => Afghanistan [total] => 3 )
[2] => Array ( [name] => Albania [total] => 0 )
)
而且,我正在尝试删除拥有0个用户的数组元素(国家/地区)。
我已经尝试使用此代码并且无法正常工作:
foreach($country as $row) {
if ($row['total'] == 0) {
unset($row);
}
}
此代码有什么问题?
答案 0 :(得分:27)
如果您unset($row)
只删除了本地变量。
而是获取密钥并删除它:
foreach ($country as $i => $row) {
if ($row['total'] == 0) {
unset($country[$i]);
}
}
答案 1 :(得分:3)
Foreach会在您循环的数组上创建键/值的副本,因此您所做的只是取消设置本地副本,而不是实际位于数组中的原始副本。直接访问数组
foreach($country as $key => $row) {
if ($row['total'] == 0) {
unset($country[$key]);
}
}
或使用引用,取消设置并在之后过滤NULL元素:
foreach($country as &$row) {
if ($row['total'] == 0) {
$row = (unset) $row;
}
}
unset($row);
$country = array_filter($country);
答案 2 :(得分:0)
因为$ row是值,而不是整个元素。
尝试: foreach($ country as $ key => $ value){ if($ row ['total'] == 0){ 未设置($国家[$关键]); } }