Php 将多阵列推送到阵列?

Php 将多阵列推送到阵列?,php,Php,我想加入galleryData数组,一个键控数组 我该怎么做 我试过: $galleryData = []; foreach($input['gallery'] as $galleryImg) { } 但是没有运气 $galleryData[] = ['name'=>$galleryImg['file']['name'], 'comment'=> $galleryImg['file']['comment'], 'youtube'=> $galleryImg['file

我想加入galleryData数组,一个键控数组

我该怎么做

我试过:

$galleryData = [];  
foreach($input['gallery'] as $galleryImg) {


}
但是没有运气

$galleryData[] = ['name'=>$galleryImg['file']['name'], 'comment'=> $galleryImg['file']['comment'], 'youtube'=> $galleryImg['file']['youtube']];
应该可以

试试这个:

$galleryData[] = array(
    'name'=>$galleryImg['file']['name'], 
    'comment'=> $galleryImg['file']['comment'],       
    'youtube'=> $galleryImg['file']['youtube']
);
$allowedKeys = array("name","comment","youtube");
$galleryData = array_map(function($a) use ($allowedKeys) {
    return array_intersect_key($a['file'],array_flip($allowedKeys));
},$input['gallery']);
如果还有其他键,请尝试此变体:

$galleryData = array_map(function($a) {return $a['file'];},$input['gallery']);
考虑到你的更新,已经没有这样的捷径了。试试这个:

$allowedKeys = array("name","comment","youtube");
$galleryData = array_map(function($a) use ($allowedKeys) {
    return array_intersect_key($a['file'],array_flip($allowedKeys));
},$input['gallery']);

为什么不把它包装成数组()?谢谢。用户1281385答案肯定很容易使用?哪一种处理方式更好?这一种使用内置函数(
array\u map
)来执行循环,因为它的级别较低,所以效率更高。谢谢。我原来的问题有一个错误注释'=>$GalleryMg['file']['comment']实际上是'comment'=>$GalleryMg['comment']。没有文件。我如何使用您的代码来处理此问题?