这是a typical array structure:
$s = array ('etc'=>'etc', 'fields' =>
array (
0 => array (
'name'=>'year', 'description'=>'Year of ...', 'type'=>'integer',
),
1 => array (
'name'=>'label', 'description'=>'Offical short name', type'=>'string',
),
2 => array (
'name' => 'xx', 'description' => 'Xx ...', 'type' => 'string',
)
));
这是一种非优雅的方式(或“不那么优雅的方式”)将大数组减少为只包含一列的简单数组:
$fields = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r)
$fields[] = $r['name'];
这有效,但是只用一条指令就可以做同样的事吗?也许使用像array_reduce(),但我不知道如何.
这是其他典型的“优雅PHP问题”:
$fieldsByName = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r)
$fields[$r['name']] = array(
'description' =>$r['description'],
'type' =>$r['type']
);
有替代品吗?这里的想法是使用关键字(示例中的名称)作为数组键,其他元素作为常用字段,因此,通用的非优雅算法是
$fieldsByName = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r){
$key = $r['name'];
unset($r['name']);
$fields[$key] = $r;
}
最佳答案
您可以使用
array_column
将具有键名称的所有值提取到另一个数组中
$names = array_column($strut['resources'][0]['schema']['fields'], 'name');
相关文章
转载注明原文:php – 有一种优雅的方法可以将结构简化为一个简单的数组吗? - 代码日志