[英]PHP array value to key
我有这个数组:
params {
[0] => {
name => "xxx"
value => "yyy"
}
[1] => {
name => "uuu"
value => "vvv"
}
}
我想实现这一目标:
params {
[0] => {
xxx => "yyy"
}
[1] => {
uuu => "vvv"
}
}
我可以这样:
foreach ($params as &$param) {
$param[$param['name']] = $param['value'];
unset($param['name']);
unset($param['value']);
unset($param);
}
但是我想知道这是否可以以更优雅的方式完成?
这需要值的数组映射 :
$params = array_map(function ($i) { return [$i['name'] => $i['value']]; }, $params);
您可以使用array_map
重复该数组。
$params = [
[
'name' => "xxx",
'value' => "yyy"
],
[
'name' => "uuu",
'value' => "vvv"
]
];
$params = array_map(function($o){
return [ $o['name'] => $o['value'] ];
}, $params);
echo "<pre>";
print_r( $params );
echo "</pre>";
这将导致:
Array
(
[0] => Array
(
[xxx] => yyy
)
[1] => Array
(
[uuu] => vvv
)
)
Doc: array_map()
尝试这个 :
foreach ($params as $key => $sub_array) {
// unset original array data
unset($params[$key]);
// construct the new values
$params[$key][$sub_array['name']] = $sub_array['value'];
}
编辑:
另一个更优雅的方法是:
foreach($params as $k=>$s){
$params[$k]=array($s['name']=>$s['value']);
}
这有点短。 通过不使用foreach
您可以直接替换元素。
for ($i = 0; $i < count ($params); $i++)
$params[$i] = array ($params[$i]['name'] => $params[$i]['value']);
为了使您的当前代码更加美观,您可以传递多个参数以取消设置
foreach ($params as &$param) {
$param[$param['name']] = $param['value'];
unset($param['name'], $param['value'], $param);
}
请尝试以下方法:
foreach ($params as $k => $v)
{
$nary[$v[name]] = $v[value];
}
$params = $nary;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.