Pet*_*uss 8 php data-structures
这是一个典型的数组结构:
$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',
)
));
Run Code Online (Sandbox Code Playgroud)
这是一种非优雅的方式(或"不那么优雅的方式"),将大数组减少为只包含一列的简单数组:
$fields = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r)
$fields[] = $r['name'];
Run Code Online (Sandbox Code Playgroud)
这有效,但是只用一条指令就可以做同样的事吗?也许使用喜欢array_reduce()
,但我不明白如何.
这是其他典型的"优雅PHP问题":
$fieldsByName = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r)
$fields[$r['name']] = array(
'description' =>$r['description'],
'type' =>$r['type']
);
Run Code Online (Sandbox Code Playgroud)
有替代品吗?这里的想法是使用关键字(name
在示例中)作为数组键,其他元素作为通常的字段,因此,通用的非优雅算法是
$fieldsByName = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r){
$key = $r['name'];
unset($r['name']);
$fields[$key] = $r;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用array_column
将带有键的所有值提取name
到另一个数组中
$names = array_column($strut['resources'][0]['schema']['fields'], 'name');
Run Code Online (Sandbox Code Playgroud)