Php 如何将所有索引数组对象合并到一个关联数组对象中
我有一个php数组对象Php 如何将所有索引数组对象合并到一个关联数组对象中,php,Php,我有一个php数组对象$images如果我通过print\r($images)打印这个数组,我会得到以下结构 Array ( [0] => stdClass Object ( [image_name] => 1.jpg ) [1] => stdClass Object ( [image_name] => 2.jpg ) [2] =&g
$images
如果我通过print\r($images)
打印这个数组,我会得到以下结构
Array
(
[0] => stdClass Object
(
[image_name] => 1.jpg
)
[1] => stdClass Object
(
[image_name] => 2.jpg
)
[2] => stdClass Object
(
[image_name] => 3.jpg
)
)
我想把它的结构转换成:
Array
(
[image_name] => stdClass Object
(
[0] => 1.jpg
[1] => 2.jpg
[2] => 3.jpg
)
)
有人请给我推荐一个用php实现的函数。你可以做一个简单的循环
$imagesArray = ['image_name' => new \stdClass()];
$counter = 0;
foreach ($images as $image) {
$imagesArray['image_name']->$counter = $image->image_name;
$counter++;
}
解释
我首先用stdClass的一个元素创建了一个数组
$imagesArray
,然后我将image\u name
作为键。然后,通过使用图像数组的foreach循环$images
,每个$images
都是stdClass对象,您只需获得images\u name
属性并将其分配给images\u name
对象作为$counter
,它只是一个整数。您可以执行一个简单的循环
$imagesArray = ['image_name' => new \stdClass()];
$counter = 0;
foreach ($images as $image) {
$imagesArray['image_name']->$counter = $image->image_name;
$counter++;
}
解释
我首先用stdClass的一个元素创建了一个数组
$imagesArray
,然后我将image\u name
作为键。然后通过使用图像数组的foreach循环$images
,每个$images
都是stdClass对象,您只需获得images\u name
属性,并将其分配给images\u name
对象作为$counter
,这只是一个整数。它是否总是具有相同的格式?是的,我将只获取指定的格式。为什么它要输出一个包含对象的数组?你确定它不应该只是一个数组吗?我使用了print_r()
来输出它。我想@SverriM.Olsen会问你希望输出为stdClass Object
通常使用数组,只是为了澄清它是否是一个错误。它是否总是具有相同的格式?是的,我将只获取指定的格式。为什么它要输出一个包含对象的数组?您确定它不应该只是一个数组吗?我使用了print\r()
来输出它。我想@SverriM.Olsen会问您希望输出为stdClass对象,因为通常使用数组,只是为了澄清它是否是一个错误。$imagesArray
将不是一个数组object@VasilShaddix是的,它起作用了。你做了什么?我是说你能解释一下吗。太好了!一个技巧:$imagesArray['image\u name']->{$counter++}=$image->image\u name代码>而不是两行:)@VasilShaddix,现在这是一个很好的答案,一些注释/解释会让它变得很好。你用stdClass的一个元素创建一个数组,我将“image\u name”作为键。然后使用foreach在图像数组中循环。每个$image都是stdClass对象,您只需获取image\u name属性并将其作为$counter分配给image\u name对象,它只是一个整数。我不会使用@bansi建议的这种结构。希望您能理解。$imagesArray
将是一个数组,而不是object@VasilShaddix是的,它起作用了。你做了什么?我是说你能解释一下吗。太好了!一个技巧:$imagesArray['image\u name']->{$counter++}=$image->image\u name代码>而不是两行:)@VasilShaddix,现在这是一个很好的答案,一些注释/解释会让它变得很好。你用stdClass的一个元素创建一个数组,我将“image\u name”作为键。然后使用foreach在图像数组中循环。每个$image都是stdClass对象,您只需获取image\u name属性并将其作为$counter分配给image\u name对象,它只是一个整数。我不会使用@bansi建议的这种结构。希望你能理解。