有没有办法在 array_map 输出上命名索引?
Is there a way to have named indexes on array_map output?
我有以下代码:
array_map(
function (ReflectionParameter $parameter){
$paramName = $parameter->getName();
return $this->params[$paramName];
,
$this->getParametersNeededByTheConstructor()
);
它输出如下内容:
- [0] => 'ParamValue'
- [2] => 'ParamValue'
- [3] => 'ParamValue'
- [4] => 'ParamValue'
- [5] => 'ParamValue'
有没有办法在上面的代码中设置数组索引?例如:
- [paramName0] => 'ParamValue'
- [paramName2] => 'ParamValue'
- [paramName3] => 'ParamValue'
- [paramName4] => 'ParamValue'
- [paramName5] => 'ParamValue'
我不相信你可以用 array_map
做到这一点,但你可以只使用一个简单的 foreach
循环。
$params = [];
foreach ($this->getParametersNeededByTheConstructor() as $parameter) {
$paramName = $parameter->getName();
$params[$paramName] = $this->params[$paramName];
}
如果你的IDE没有自动检测循环变量的类型,你可以将主体包裹在一个匿名函数中
$params = [];
foreach ($this->getParametersNeededByTheConstructor() as $parameter) {
(function(ReflectionParameter $parameter) {
$paramName = $parameter->getName();
$params[$paramName] = $this->params[$paramName];
})($parameter);
}
要从您当前的数组获得预期的结果,您可以使用数组组合和 foreach 循环。
循环使用键值创建新数组,数组组合使用键作为新数组中的键,使用原始数组的值作为值。
$arr = array( 0=> 'ParamValue',
2 => 'ParamValue',
3 => 'ParamValue',
4 => 'ParamValue',
5 => 'ParamValue');
$keys =array();
Foreach($arr as $key =>$val){
$keys[] = $val . $key;
}
$result = array_combine($keys, $arr);
Var_dump($result);
我有以下代码:
array_map(
function (ReflectionParameter $parameter){
$paramName = $parameter->getName();
return $this->params[$paramName];
,
$this->getParametersNeededByTheConstructor()
);
它输出如下内容:
- [0] => 'ParamValue'
- [2] => 'ParamValue'
- [3] => 'ParamValue'
- [4] => 'ParamValue'
- [5] => 'ParamValue'
有没有办法在上面的代码中设置数组索引?例如:
- [paramName0] => 'ParamValue'
- [paramName2] => 'ParamValue'
- [paramName3] => 'ParamValue'
- [paramName4] => 'ParamValue'
- [paramName5] => 'ParamValue'
我不相信你可以用 array_map
做到这一点,但你可以只使用一个简单的 foreach
循环。
$params = [];
foreach ($this->getParametersNeededByTheConstructor() as $parameter) {
$paramName = $parameter->getName();
$params[$paramName] = $this->params[$paramName];
}
如果你的IDE没有自动检测循环变量的类型,你可以将主体包裹在一个匿名函数中
$params = [];
foreach ($this->getParametersNeededByTheConstructor() as $parameter) {
(function(ReflectionParameter $parameter) {
$paramName = $parameter->getName();
$params[$paramName] = $this->params[$paramName];
})($parameter);
}
要从您当前的数组获得预期的结果,您可以使用数组组合和 foreach 循环。
循环使用键值创建新数组,数组组合使用键作为新数组中的键,使用原始数组的值作为值。
$arr = array( 0=> 'ParamValue',
2 => 'ParamValue',
3 => 'ParamValue',
4 => 'ParamValue',
5 => 'ParamValue');
$keys =array();
Foreach($arr as $key =>$val){
$keys[] = $val . $key;
}
$result = array_combine($keys, $arr);
Var_dump($result);