PHP - 在数组中将all或null设置为0,不带foreach循环

时间:2011-06-30 17:02:46

标签: php arrays foreach

我正在使用大型阵列。我们用表格显示数组中的所有数据字段。数组中的某些字段为null,因为用户尚未在该字段中累积任何内容。但是,当他们有这样的结果时我们想要零。我们的解决方案是显示值以及intval()

intval(@$users[$user_id]['loggedin_time'])

哪个好,但它丑陋且不优雅。有没有一个方法,没有foreach循环,将数组中的''的所有值设置为0?

2 个答案:

答案 0 :(得分:9)

是的,array_map

$input = array(...);
$output = array_map(function($item) { return $item ?: 0; }, $input);

上面的例子使用了PHP> = 5.3(内联匿名函数声明和三元运算符的简写形式)的设施,但你可以在任何PHP版本中做同样的事情(可能只是更冗长)。

你应该考虑一下回调函数中的条件;我在这里使用的那个将把所有评估为false的值替换为带有零的布尔值(这包括空字符串,但它还包括例如null值 - 所以你可能想要调整条件,取决于你的需要)。

更新: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);

答案 1 :(得分:0)

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

如果从Mysql表中获取数组,请尝试以下方法: http://forums.mysql.com/read.php?20,36579,36579#msg-36579