gpt4 book ai didi

php - 有没有一种优雅的方法可以将结构简化为简单数组?

转载 作者:可可西里 更新时间:2023-11-01 12:34:11 26 4
gpt4 key购买 nike

这是 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']
);

是否有 PHP 替代方案? 这里的想法是使用关键字(示例中的 name)作为数组键,其他元素作为通常的字段,所以,通用的非优雅算法是

 $fieldsByName = array();
foreach ($strut['resources'][0]['schema']['fields'] as $r){
$key = $r['name'];
unset($r['name']);
$fields[$key] = $r;
}

最佳答案

您可以使用 array_column将具有键 name 的所有值提取到另一个数组中

$names = array_column($strut['resources'][0]['schema']['fields'], 'name');

关于php - 有没有一种优雅的方法可以将结构简化为简单数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29200367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com