这是
a typical array structure:
@H_301_20@
您可以使用
$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');