PHP/Laravel-从key包含数据的数组中获取key名称
我有下面的数组名为PHP/Laravel-从key包含数据的数组中获取key名称,php,arrays,laravel,Php,Arrays,Laravel,我有下面的数组名为$items: 数组:3[▼ 0=>数组:9[▼ “数量”=>1 “名称”=>“导轨,联锁板条,R商品代码:39239000/原产国:PL.交货单838174147,2019年9月12日PC 1,50/10” ] 1=>数组:9[▼ “数量”=>空 “名称”=>“联锁板条导轨,L商品代码:39239000/原产国:PL.2019年9月12日的交货单838174147” ] 2=>数组:9[▼ “数量”=>空 “名称”=>“底槽套装L+R商品代码:39239000/原产国:” ]
$items
:
数组:3[▼
0=>数组:9[▼
“数量”=>1
“名称”=>“导轨,联锁板条,R商品代码:39239000/原产国:PL.交货单838174147,2019年9月12日PC 1,50/10”
]
1=>数组:9[▼
“数量”=>空
“名称”=>“联锁板条导轨,L商品代码:39239000/原产国:PL.2019年9月12日的交货单838174147”
]
2=>数组:9[▼
“数量”=>空
“名称”=>“底槽套装L+R商品代码:39239000/原产国:”
]
]
我试图找到特定的键,它在所有三个子数组中都有一个值。在本例中,这将是键name
,因为此特定键在所有三个数组中都有一个值
我试图为此编写一个函数,如下所示:
函数getKeysWithData(数组$items):数组
{
//获取包含所有项的区域数据的密钥。
$keysWithData=collect($items)->map(函数($item){
返回数组_键(collect($item)->filter()->toArray());//filter将删除所有null
})->展平()->unique()->toArray();
}
上述函数返回一个数组,其中包含具有某些值的键的名称。因此,对于上述$items
,它将返回:
数组:2[▼
0=>“数量”
1=>“名称”
]
这是因为qty
和name
在某个点上都包含一些值。但是,它应该只返回name
我该怎么做,这样它将只返回在所有数组中都有数据的键的名称?对二维数组使用两次foreach循环。 前任: '''
“”“虽然这不是laravel和所有这些功能样式,但至少它只在阵列上循环一次:
// Take first element so as to know what keys do we have:
$keys = $items[0];
foreach ($items as $item) {
foreach ($item as $key => $value) {
if ($value === null) {
// unset the key which has NULL value
unset($keys[$key]);
}
// if there no keys left - break all loops
if (empty($keys)) {
break 2;
}
}
}
print_r(array_keys($keys));
和。试试这个
…unique()->only(['name'])->toArray()代码>问题是我事先不知道密钥的名称(它是动态名称,可以是任何名称)
// Take first element so as to know what keys do we have:
$keys = $items[0];
foreach ($items as $item) {
foreach ($item as $key => $value) {
if ($value === null) {
// unset the key which has NULL value
unset($keys[$key]);
}
// if there no keys left - break all loops
if (empty($keys)) {
break 2;
}
}
}
print_r(array_keys($keys));