我目前正在根据对象构建数组,并且有一个名为images的元素,该元素具有多个子元素,称为“ urls”,其结构类似
categories": [
{
"images": [
{
"urls": [
"path/test.jpg",
"path/test2.jpg",
"path/test3.jpg"
],
},
{
"urls": [
"path/test4.jpg",
"path/test5.jpg",
"path/test6.jpg"
],
},
{
"urls": [
"path/test7.jpg",
"path/test8.jpg",
"path/test9.jpg"
],
},
]
那里的值没有键,它只是URL路径,但我想将它们添加到我的$groupItem
数组中,只是让每个URL是与组号处于同一级别的自己的元素(基本上,我正在导出,并且需要每个url作为其自己的列)
我想要的结构
0 =>"path/test.jpg",
1 =>"path/test2.jpg",
2 =>"path/test3.jpg"
3 =>"path/test4.jpg",
4 =>"path/test5.jpg",
5 =>"path/test6.jpg"
6 =>"path/test7.jpg",
7 =>"path/test8.jpg",
8 =>"path/test9.jpg"
循环/数组:
foreach($prices->groups as $group){
$groupItem = array();
$groupItem["number"] = $group->number;
foreach($group->images as $images){
$groupItem["urls"] = $images->urls;
}
}
如何简单地将任何URL添加到该数组的groupItem级别?
答案 0 :(得分:2)
在外部循环之外,将值初始化为一个空数组:
$groupItem["urls"] = [];
然后使用空数组引用运算符将新值附加到数组的末尾:
foreach($group->images as $images){
$groupItem["urls"][] = $images->urls; // add this url to the end of the list
}
或者,使用array_push()
:
foreach($group->images as $images){
array_push($groupItem["urls"], $images->urls);
}
我认为您也可以跳过内部循环,仅使用数组爆炸运算符,如下所示:
array_push($groupItem["urls"], ...$images->urls);
答案 1 :(得分:1)
您还可以将array_column与variable length参数列表一起使用(自php 5.6起):
例如,对于包含对象数组的图像,其中每个对象都具有属性urls
并包含图像URL数组:
foreach ($prices->groups as $group) {
$groupItem = array();
$groupItem["number"] = $group->number;
$groupItem= array_merge($groupItem, ...array_column($group->images, "urls"));
}