给定一个数组数组,如何用0替换所有空值?

时间:2010-04-15 18:24:19

标签: php arrays null

示例数组

$myArray[0] = array('23', null, '43', '12');
$myArray[1] = array(null, null, '53', '19');
$myArray[2] = array('12', '13', '14', null);

所有空值都应替换为0.我希望有人能够有效地执行此操作,这可能是我不知道的内置PHP函数。

2 个答案:

答案 0 :(得分:18)

您可以使用array_walk_recursive函数,其回调函数将null替换为0


例如,考虑到你的数组以这种方式声明:

$myArray[0] = array(23, null, 43, 12);
$myArray[1] = array(null, null, 53, 19);
$myArray[2] = array(12, 13, 14, null);

注意:我猜你做了一个拼写错误,你的数组不仅包含一个字符串,而是包含几个子元素。


你可以使用这种代码:

array_walk_recursive($myArray, 'replacer');
var_dump($myArray);


使用以下回调功能:

function replacer(& $item, $key) {
    if ($item === null) {
        $item = 0;
    }
}

请注意:

  • 第一个参数是通过引用传递的!
    • 表示修改它会修改数组中的相应值
  • 我正在使用===运算符进行比较


你会得到以下输出:

array
  0 => 
    array
      0 => int 23
      1 => int 0
      2 => int 43
      3 => int 12
  1 => 
    array
      0 => int 0
      1 => int 0
      2 => int 53
      3 => int 19
  2 => 
    array
      0 => int 12
      1 => int 13
      2 => int 14
      3 => int 0

答案 1 :(得分:2)

如果单引号是无意的,并且数组有整数和空值:

for ($i = 0; $i < count($myArray); $i++)
{
    if ($myArray[$i] == null) $myArray[$i] = 0;
}