有没有办法在array_map输出上有命名索引?

时间:2017-07-31 19:57:29

标签: php indexing array-map

我有以下代码:

array_map(
    function (ReflectionParameter $parameter){

        $paramName = $parameter->getName();

        return $this->params[$paramName];
    ,
    $this->getParametersNeededByTheConstructor()
);

输出如下内容:

  
      
  1. [0] => 'ParamValue'
  2.   
  3. [2] => 'ParamValue'
  4.   
  5. [3] => 'ParamValue'
  6.   
  7. [4] => 'ParamValue'
  8.   
  9. [5] => 'ParamValue'
  10.   

有没有办法在上面的代码中设置数组索引?例如:

  
      
  1. [paramName0] => 'ParamValue'
  2.   
  3. [paramName2] => 'ParamValue'
  4.   
  5. [paramName3] => 'ParamValue'
  6.   
  7. [paramName4] => 'ParamValue'
  8.   
  9. [paramName5] => 'ParamValue'
  10.   

2 个答案:

答案 0 :(得分:1)

我不相信你可以使用foreach执行此操作,但您可以使用简单的$params = []; foreach ($this->getParametersNeededByTheConstructor() as $parameter) { $paramName = $parameter->getName(); $params[$paramName] = $this->params[$paramName]; } 循环。

$params = [];
foreach ($this->getParametersNeededByTheConstructor() as $parameter) {
    (function(ReflectionParameter $parameter) {
        $paramName = $parameter->getName();
        $params[$paramName] = $this->params[$paramName];
    })($parameter);
}

如果您的IDE没有自动检测循环变量的类型,您可以将主体包装在匿名函数中

$query = "SELECT * FROM `perfis` WHERE id= `".$_SESSION['perfil']."`;";

$result = mysqli_query($con,$query);

$regPerfil = mysqli_fetch_array($result);

答案 1 :(得分:1)

要从当前数组获得预期数组,可以使用数组合并和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);

https://3v4l.org/vTWjs