PHP数组值为key

Mil*_*rad 1 php arrays

我有这个数组:

params {
  [0] => {
    name  => "xxx"
    value => "yyy"
  } 
  [1] => {
    name  => "uuu"
    value => "vvv"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想实现这个目标:

params {
  [0] => {
    xxx => "yyy"
  }
  [1] => {
    uuu => "vvv" 
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

foreach ($params as &$param) {
  $param[$param['name']] = $param['value'];
  unset($param['name']);
  unset($param['value']);
  unset($param);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道这是否可以更优雅的方式完成?

dec*_*eze 6

这需要值的数组映射:

$params = array_map(function ($i) { return [$i['name'] => $i['value']]; }, $params);
Run Code Online (Sandbox Code Playgroud)

  • 例如,在Javascript中,这将是`params = params.map(i =>({[i.name]:i.value}))`.它几乎没有比这更简洁,这个概念转化为大多数其他语言. (3认同)
  • 这是旁观者的眼睛.A*mapping*是一个定义的动作,你需要知道的是1)这是一个映射,2)回调返回的内容.然后它非常精确和可读.太糟糕的PHP冗长的语法使它有点笨拙. (2认同)