Php 从不工作的数组中删除元素
我有以下代码从数组中删除元素:Php 从不工作的数组中删除元素,php,arrays,unset,Php,Arrays,Unset,我有以下代码从数组中删除元素: for ($i = 0; $i < count($contracte); $i++) { if ($contracte[$i]['total_luni_contract'] == $contracte[$i]['luni_contract_cu_cheltuieli']) { unset($contracte[$i]); } } 运行代码后,数组保持不变。它应该取消设置$contracte[1],$con
for ($i = 0; $i < count($contracte); $i++) {
if ($contracte[$i]['total_luni_contract'] == $contracte[$i]['luni_contract_cu_cheltuieli']) {
unset($contracte[$i]);
}
}
运行代码后,数组保持不变。它应该取消设置$contracte[1]
,$contracte[2]
,$contracte[7]
和$contracte[20]
有什么想法吗?尝试改用阵列拼接 阵列拼接($contracte,$i,1)
此外,当您从数组中删除某些内容时,您还需要减少$i,这样它将再次检查位于$i位置的项目。在数组上运行一个foreach。已经证明,从当前使用foreach循环迭代的数组中删除密钥是完全安全的
foreach($contracte as $cheie => $contract) {
if ($contract['total_luni_contract'] == $contract['luni_contract_cu_cheltuieli']) {
unset($contracte[$cheie]);
}
}
问题:当循环到达第二个元素(1)时,它会将其取消设置,所以第二个元素会到达该位置。所以在下一个循环中,它检查$i=1,这将是下一个元素。所以(2)被跳过了 解决方案: 使用foreach
foreach($contracte as $key=> $val) {
if ($val['total_luni_contract'] == $val['luni_contract_cu_cheltuieli']) {
unset($contracte[$key]);
}
}
或
将键设置为字符串-将其设置为关联数组,然后再设置为您的解决方案
如果您的数组是这样的:它将工作
Array
(
[one] => Array
(
[id_contract] => 3
[numar] => 2955
[data] => 2011-04-04
[total_luni_contract] => 2
[luni_contract_cu_cheltuieli] => 0
)
[two] => Array
(
[id_contract] => 25
[numar] => 14
[data] => 2013-01-07
[total_luni_contract] => 1
[luni_contract_cu_cheltuieli] => 1
)
[three] => Array
(
[id_contract] => 26
[numar] => 15
[data] => 2013-01-07
[total_luni_contract] => 1
[luni_contract_cu_cheltuieli] => 1
)
[four] => Array
(
[id_contract]
在这个简单的示例中,如果unset()确实不应该“不”工作,则IF语句可能无效。试着用回音循环,看看哪些通过了,哪些没有。假阳性结果可能令人恼火^^^是的,它进入if()语句,但似乎它在每次迭代后都会打印一些内容,而不仅仅是在满足条件的迭代之后。
Array
(
[one] => Array
(
[id_contract] => 3
[numar] => 2955
[data] => 2011-04-04
[total_luni_contract] => 2
[luni_contract_cu_cheltuieli] => 0
)
[two] => Array
(
[id_contract] => 25
[numar] => 14
[data] => 2013-01-07
[total_luni_contract] => 1
[luni_contract_cu_cheltuieli] => 1
)
[three] => Array
(
[id_contract] => 26
[numar] => 15
[data] => 2013-01-07
[total_luni_contract] => 1
[luni_contract_cu_cheltuieli] => 1
)
[four] => Array
(
[id_contract]