PHP-将数组中的所有内容都设置为空或null,设置为0,不带foreach循环
我正在处理一个大型阵列。我们正在用一个表显示数组中的所有数据字段。数组中的某些字段为空,因为用户尚未在该字段中累积任何内容。然而,当他们有这样的结果时,我们想要一个零。我们的解决方案是将值与intval一起显示 intval@$users[$user\u id]['loggedin\u time'] 这很好,但它又丑又不雅。是否有一种方法可以在不使用foreach循环的情况下将数组中的所有值设置为0?是,使用: 上面的示例使用PHP>=5.3内联匿名函数声明和三元运算符的缩写形式,但在任何PHP版本中都可以这样做,但可能更详细 您应该考虑一下回调函数内部的条件;我在这里使用的方法将把所有计算为false的布尔值替换为零。这确实包括空字符串,但也包括空值,因此您可能需要根据需要调整条件 更新:PHP<5.3版本 要么是这样: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
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。