【发布时间】:2015-08-20 04:59:11
【问题描述】:
我有这个测试数组
$test = array(-10,20,40,-30,50,-60);
我希望输出是
$out = array (-10, -30, -60);
这是我的解决方案:
$temp = array();
function neg($x)
{
if ($x <0)
{
$temp[] = $x;
return $x;
}
}
$negative = array_map("neg", $test);
当我打印$negative 时,我得到了我想要的东西,但有些条目是空的。我可以在回调函数中做些什么来不记录空条目吗?
Array
(
[0] => -10
[1] =>
[2] =>
[3] => -30
[4] =>
[5] => -60
)
1
当我打印$temp 数组时,我以为我会得到答案,但它打印了一个空数组。我不明白为什么,我正在清除将$x 添加到我的回调函数中的$temp[] 数组。有什么想法吗?
print_r($temp);
// outputs
Array
(
)
1
【问题讨论】:
-
你不想要array_map...你想要array_filter
-
@Orangepill 但是这与 array_map 无关,对吧?我将值 $x 存储在回调函数中可访问的 $temp 数组中。
-
见例子here
-
$temp的范围在回调中。 -
为什么会这样?我在回调之外声明了 $temp,并且每次调用回调时都将 $x 附加到 $temp。?
标签: php arrays callback array-map