如何在PHP中将数组缩进另一个数组
I have an array structure like the following:
I would like to have the elements keys, bi, media and offer under biz_id. Like this:
biz_id
bi
media
offer
biz_id
...
My code is the following:
foreach ($premiumContent as $targets=>$target)
{
$finalResult[]["biz_id"] = $target->biz_id;
foreach ($target->media as $media)
{
switch ($media->type_id)
{
case '1':
$finalResult[]["info"] = $media->text;
break;
case '6':
$finalResult[]["bi"] = $media->url;
break;
case '4':
$mediaGroup[] = array('link' => $media->url, 'descript' => $media->text);
break;
case '3':
$offerGroup[] = array('link' => $media->url, 'descript' => $media->text);
break;
default:
echo '';
}
}
$finalResult[]["media"] = $mediaGroup;
$finalResult[]["offer"] = $offerGroup;
}
return $finalResult;
What can I do to group the keys underneath biz_id?
Thanks for the recommendations.
我的数组结构如下: p>
p>
我想要元素键,bi,媒体和 在biz_id下提供。 像这样: p>
biz_id
bi
media
offer
biz_id
...
code> pre>
我的代码如下: p>
foreach($ premiumContent as $ targets => $ target)
{
$ finalResult [] [“biz_id”] = $ target-> biz_id;
foreach($ target-> media as $ media)
{
switch($ media-> type_id)
{
case'1':
$ finalResult [] [“info”] = $ media-> text;
break;
case'6':
$ finalResult [] [“bi”] = $ media-> url;
break ;
案例'4':
$ mediaGroup [] = array('link'=> $ media-> url,'descript'=> $ media-> text);
break;
case '3':
$ offerGroup [] = array('link'=> $ media-> url,'descript'=> $ media-> text);
break;
默认:
echo'';
}
}
$ finalResult [] [“media”] = $ mediaGroup;
$ finalResult [] [“offer”] = $ offerGroup;
} \ n
return $ finalResult;
code> pre>
如何对biz_id下面的键进行分组? p>
感谢您的建议。 p>
div>
Simple: make the biz_id the key of the array:
foreach ($premiumContent as $targets=>$target)
{
foreach ($target->media as $media)
{
switch ($media->type_id)
{
case '1':
$finalResult[$target->biz_id]["info"] = $media->text;
break;
case '6':
$finalResult[$target->biz_id]["bi"] = $media->url;
break;
case '4':
$mediaGroup[] = array('link' => $media->url, 'descript' => $media->text);
break;
case '3':
$offerGroup[] = array('link' => $media->url, 'descript' => $media->text);
break;
default:
echo '';
}
}
$finalResult[$target->biz_id]["media"] = $mediaGroup;
$finalResult[$target->biz_id]["offer"] = $offerGroup;
}
return $finalResult;
Create each parent array using the biz_id
as the array key. For example, your first switch case would look like $finalResult[$target->biz_id]["info"] = $media->text;
. Then you could simply remove this line -> $finalResult[]["biz_id"] = $target->biz_id;
You need to create a sub-array with elements info
, bi
and media
which are assigned to the biz_id
key of the parent array. This code creates an intermediary result which is then assigned to another element of your $finalResult
array at the end (assuming there is more than 1 biz_id
'group' of values returned, as hinted by your variable dump).
foreach ($premiumContent as $targets=>$target) {
$interResult['biz_id'] = $target->biz_id;
foreach ($target->media as $media) {
switch ($media->type_id) {
case '1':
$interResult['biz_id']['info'] = $media->text;
break;
case '6':
$interResult['biz_id']['bi'] = $media->url;
break;
case '4':
$interResult['biz_id']['media'] = array(
'link' => $media->url,
'descript' => $media->text,
);
break;
case '3':
$interResult['biz_id']['offer'] = array(
'link' => $media->url,
'descript' => $media->text,
);
break;
default:
echo '';
}
}
$finalResult[] = $interResult;
}
return $finalResult;
I am Lazy
foreach ($premiumContent as $targets=>$target)
{
$finalResult[]["biz_id"] = $target->biz_id;
//<<my changes
foreach ($finalResult as $key => $val)
{
}
$key;
//my changes>>
foreach ($target->media as $media)
{
switch ($media->type_id)
{
case '1':
$finalResult[]["info"] = $media->text;
break;
case '6':
//<<my changes
$finalResult[$key]["bi"] = $media->url;
//my changes>>
break;
case '4':
$mediaGroup[] = array('link' => $media->url, 'descript' => $media->text);
break;
case '3':
$offerGroup[] = array('link' => $media->url, 'descript' => $media->text);
break;
default:
echo '';
}
}
//<<my changes
$finalResult[$key]["media"] = $mediaGroup;
$finalResult[$key]["offer"] = $offerGroup;
//my changes>>
}
return $finalResult;