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));