我有一个数组。我想检查其元素的值并在它们等于0或0.00时更改它们
这是我尝试过的失败的原因:
foreach($returnArray as $arrayElement){
if($arrayElement === 0 || $arrayElement === 0.00){
$arrayElement = null;
}
}
我想将0或0.00值更改为空值。 $ returnArray是我的主数组,它有一些int和double值。
答案 0 :(得分:3)
您可以使用array_map()
,只测试每个元素的假值(0
和0.00
等于false):
$returnArray = array_map(function($a) { return $a ?: null; }, $returnArray);
答案 1 :(得分:2)
只有一个错误,$arrayElement = null;
仅在循环内具有范围。你需要
foreach($returnArray as $key=>$arrayElement){
if($arrayElement == 0 ){
$returnArray[$key] = null; // This updates the actual array
}
}
这样你就可以更新实际的数组元素,即使在循环之后也会保持这种状态。在循环中使用临时变量不会在其外部显示变化。
答案 2 :(得分:2)
PHP将元素作为副本传递给foreach
循环。你可以pass the actual element by refence这样:
foreach($returnArray as &$arrayElement){
if($arrayElement === 0 || $arrayElement === 0.00){
$arrayElement = null;
}
}
答案 3 :(得分:1)
并且:
foreach($returnArray as $k => $arrayElement){
if($arrayElement <= 0){
$returnArray[$k] = null;
}
}