Php 阵列漫游还是阵列地图?

Php 阵列漫游还是阵列地图?,php,arrays,return-value,Php,Arrays,Return Value,我目前正在使用array\u map对数组的元素应用回调。但是我希望能够像array\u walk那样将参数传递给回调函数。 我想我可以只使用array\u walk,但我需要返回值是一个数组,就像使用array\u map一样,而不是TRUE或FALSE 那么,是否可以使用array\u map并将参数传递给回调函数?或者让数组\u walk返回一个数组而不是布尔值?根据需要传递的参数类型,您可以创建一个包装函数: $arr = array(2, 4, 6, 8); function mapp

我目前正在使用
array\u map
对数组的元素应用回调。但是我希望能够像
array\u walk
那样将参数传递给回调函数。 我想我可以只使用
array\u walk
,但我需要返回值是一个数组,就像使用
array\u map
一样,而不是TRUE或FALSE


那么,是否可以使用
array\u map
并将参数传递给回调函数?或者让
数组\u walk
返回一个数组而不是布尔值?

根据需要传递的参数类型,您可以创建一个包装函数:

$arr = array(2, 4, 6, 8);
function mapper($val, $constant) {
    return $val * $constant;
}

$constant = 3;
function wrapper($val) {
    return mapper($val, $GLOBALS['constant']);
}

$arr = array_map('wrapper', $arr);

这似乎太简单了,不可能是真的。我想我们需要更多的上下文才能真正提供帮助。

您不需要它来返回数组

而不是:

$newArray = array_function_you_are_looking_for($oldArray, $funcName);
它是:


如果希望返回值是一个数组,只需使用array\u map即可。要向数组_映射添加其他参数,请使用“use”,例如:


要对Hieu的好答案进行一点扩展,还可以使用原始数组的$key=>$value对。下面是一个从注释部分借用的代码示例

下面将使用“use”并包含一个新数组的附加参数

下面的代码将抓取“b_值”和“d_值”并放入一个新数组$new_arr” (用一个无用的例子来说明一点)

^$k是关键,$v是价值

打印$new\u arr是

Array
(
    [0] => b_value
    [1] => d_value
)

但是如果我使用
array\u walk
返回值将是TRUE或FALSE。我希望返回值是像
array\u map
那样的数组。因此,要么找到使用
array\u map
传递参数的方法,要么找到
array\u walk
返回数组而不是布尔值的方法。
array\u walk
是否编辑调用它的原始数组?因为如果是这样的话,这是非常美妙的。这是因为array_walk设置了数组。尝试打印($newArray);之后注意,Tomalak没有执行
$arr=array\u walk($newArray,$funcName)
TRUE仅表示“有效”,您可以使用插入的数组。@sdleihssirhc是的,数组将修改原始数组。这就是为什么我需要它返回一个数组而不是布尔值。@PENDO这不取决于提供的函数吗?我搞砸了
array\u walk
,它只在我定义的“walker”函数使用
&
符号时修改了原始数组:
函数walker(&$val){…}
array_map(function($v) use ($tmp) { return $v * $tmp; }, $array);
array_map(function($v) use ($a, $b) { return $a * $b; }, $array);
// original array
$arr = ("a" => "b_value",
"c" => "d_value"); 

// new array
$new_arr = array();

array_map(function($k,$v) use (&$new_arr) { $new_arr[] = $v;}, array_keys($arr), $arr);
Array
(
    [0] => b_value
    [1] => d_value
)