【问题标题】:PHP Merge Array during ForEachForEach 期间的 PHP 合并数组
【发布时间】:2013-10-08 09:32:56
【问题描述】:

我正在从 JSON 提要中获取信息,并创建一个我可以在更多设备上更轻松地使用的 JSON 提要。我遇到的问题是在 PHP 中为 JSON 提要创建新数组时,我需要使用 foreach 循环。这是我的 foreach 循环代码:

$obj = json_decode($json);
$json_decode = objectToArray($obj);

$special_number = '0';
$special_number2 = '0';
foreach($json_decode AS $r) {
$info = explode('.', $json_decode[$special_number]['Id']);
$newarray = array( $special_number => array( 'client' => $info['4'], 'placementID' => $info['2'], 'creativeID' => $info['3'], 'dimensions' => $info['3'], 'impressions' => $json_decode[$special_number]['Impressions'], 'bxd' => $json_decode[$special_number]['BXD'], 'viewable_impressions' => $json_decode[$special_number]['ViewableImpressions'], 'exposure' => $json_decode[$special_number]['Exposure'], 'viewability_rate' => $json_decode[$special_number]['ViewableRate'], 'clicks' => $json_decode[$special_number]['AdClicks'], 'mouse_overs' => $json_decode[$special_number]['AdMouseOvers'] ));

$fullarray = array_merge($newarray);

$special_number++;
}

我基本上是在获取他们的数组,重新排序信息并只获取我需要的数据,然后用它创建一个新数组,称为$fullarray。我制作的每个子数组都是每次生成的,是不是因为我运行了foreach,它正在破坏旧的$fullarray,并创建一个新的?它给了我以下信息:

Array
(
[0] => Array
    (
        [client] => 
        [placementID] => 3
        [creativeID] => 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
        [dimensions] => 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
        [impressions] => 1
        [bxd] => 0
        [viewable_impressions] => 0
        [exposure] => 0
        [viewability_rate] => 0
        [clicks] => 1
        [mouse_overs] => 1
    )

)

我已经搜索过了,但我找不到它,其他线程是关于组合不同的键和值,我必须创建子数组以保持键相同,并具有不同的值(这就是我想要的,是的。)

任何帮助将不胜感激! :)

【问题讨论】:

  • 不要在你的 foreach 中使用$json_decode[$special_number]['Id']。记住“foreach($json_decode as $r)”!!在里面使用$r['id']。创建新变量以使用 $json_decode[$special_number]

标签: php arrays json loops foreach


【解决方案1】:

应该这样做:

$fullarray = array()
foreach(...) 
{
    ...
    $fullarray = array_merge($fullarray,$newarray);
}

merge 函数可以合并更多的数组参数,在你的情况下,你没有将 fullarray 的内容合并到新数组中,而是覆盖它。

你可能还需要在 foreach 之前声明完整的数组

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多