我正在使用大型阵列。我们用表格显示数组中的所有数据字段。数组中的某些字段为null,因为用户尚未在该字段中累积任何内容。但是,当他们有这样的结果时我们想要零。我们的解决方案是显示值以及intval()
intval(@$users[$user_id]['loggedin_time'])
哪个好,但它丑陋且不优雅。有没有一个方法,没有foreach循环,将数组中的''的所有值设置为0?
答案 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