Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-将数组中的所有内容都设置为空或null,设置为0,不带foreach循环_Php_Arrays_Foreach - Fatal编程技术网

PHP-将数组中的所有内容都设置为空或null,设置为0,不带foreach循环

PHP-将数组中的所有内容都设置为空或null,设置为0,不带foreach循环,php,arrays,foreach,Php,Arrays,Foreach,我正在处理一个大型阵列。我们正在用一个表显示数组中的所有数据字段。数组中的某些字段为空,因为用户尚未在该字段中累积任何内容。然而,当他们有这样的结果时,我们想要一个零。我们的解决方案是将值与intval一起显示 intval@$users[$user\u id]['loggedin\u time'] 这很好,但它又丑又不雅。是否有一种方法可以在不使用foreach循环的情况下将数组中的所有值设置为0?是,使用: 上面的示例使用PHP>=5.3内联匿名函数声明和三元运算符的缩写形式,但在任何PHP

我正在处理一个大型阵列。我们正在用一个表显示数组中的所有数据字段。数组中的某些字段为空,因为用户尚未在该字段中累积任何内容。然而,当他们有这样的结果时,我们想要一个零。我们的解决方案是将值与intval一起显示

intval@$users[$user\u id]['loggedin\u time']

这很好,但它又丑又不雅。是否有一种方法可以在不使用foreach循环的情况下将数组中的所有值设置为0?

是,使用:

上面的示例使用PHP>=5.3内联匿名函数声明和三元运算符的缩写形式,但在任何PHP版本中都可以这样做,但可能更详细

您应该考虑一下回调函数内部的条件;我在这里使用的方法将把所有计算为false的布尔值替换为零。这确实包括空字符串,但也包括空值,因此您可能需要根据需要调整条件

更新:PHP<5.3版本

要么是这样:

function callback($item) {
    return $item == false ? 0 : $item;
}

$output = array_map('callback', $input);
或者这个:

$output = array_map(
     create_function('$item', 'return $item == false ? 0 : $item;'),
     $input);
是的,有:

上面的示例使用PHP>=5.3内联匿名函数声明和三元运算符的缩写形式,但在任何PHP版本中都可以这样做,但可能更详细

您应该考虑一下回调函数内部的条件;我在这里使用的方法将把所有计算为false的布尔值替换为零。这确实包括空字符串,但也包括空值,因此您可能需要根据需要调整条件

更新:PHP<5.3版本

要么是这样:

function callback($item) {
    return $item == false ? 0 : $item;
}

$output = array_map('callback', $input);
或者这个:

$output = array_map(
     create_function('$item', 'return $item == false ? 0 : $item;'),
     $input);

我假设您正在从某种数据库中检索此信息

如果要从Mysql表获取数组,请尝试以下操作:

我假设您正在从某种数据库中检索此信息

如果要从Mysql表获取数组,请尝试以下操作:

默认值是多少?在创建数组时,可以将其设置为0吗?默认值是多少?你能在创建数组时将其设置为0吗?只是为了学究,这仍然会使用循环。它只是在PHP内部不可见地完成,而不是显式地通过foreach或其他任何方式完成。您需要检查$item['loggedin_time']。@MarcB:显然,但这个问题让我觉得是一个实际应用程序的问题。请简短一点,不是理论性的。没有循环就可以完成。@konforce:为什么$输入将是$users[$user\u id]。@Jon,我假设他希望预先为整个数组$users数组这样做,但是由于他已经在以某种方式迭代,他可能会在每个解决方案的每个迭代中只调用一次array\u map。为了学究,这仍然会使用循环。它只是在PHP内部不可见地完成,而不是显式地通过foreach或其他任何方式完成。您需要检查$item['loggedin_time']。@MarcB:显然,但这个问题让我觉得是一个实际应用程序的问题。请简短一点,不是理论性的。没有循环就可以完成。@konforce:为什么$输入将是$users[$user\u id]。@Jon,我假设他希望预先为整个数组$users数组执行此操作,但由于他已经在以某种方式对其进行迭代,所以他最好在每个解决方案的每次迭代中只调用一次array\u map。