首页 > 解决方案 > 如何在 foreach 循环中创建多维数组

问题描述

我正在尝试在 foreach 循环中创建一个多维数组。

首先让我放置我的代码:

$jsonstring = [];


foreach($results as $result){

    if(isset($simplicate_fields['data'][0]['custom_fields'][17]['value'])){
            $dexcode_value          =   $simplicate_fields['data'][0]['custom_fields'][17]['value'];
    }else{
          $dexcode_value          = '';
    }


    if(isset($simplicate_fields['data'][0]['visiting_address']['country'])){
            $simplicate_land        =   $simplicate_fields['data'][0]['visiting_address']['country'];
    }else{
         $simplicate_land        = '';
    }


    $body = array(

        'DEXCODE' => $dexcode_value,

        'LAND' => $simplicate_land,
    );


    $jsonstring = array_merge($jsonstring , $body);

}

print_r($jsonstring);

现在让我解释一下。在循环之前,我创建了一个名为 jsonstring 的空数组。在循环内部,我创建了另一个名为 body 的数组。body 数组包含来自数组的数据,im 循环通过。在循环结束时,我将正文与 json 字符串合并。

问题是,每当我在循环外打印 jsonstring 时,它只会给我 1 个循环实例。结果如下所示:

(
    [DEXCODE] => 
    [LAND] => Country_The Netherlands
    [CP GENDER] => heer
    [OROrganisation] => private
    [STRAATNAAM] => private
    [ORCITY] => private
    [OREMAIL] => private
    [ORWEBSITE] => private
    [CP_PHONE] => private
    [first_name] => private
    [last name] => private
    [FUNCTIE] => private
    [CPMobile] => private
    [CPEmail1] => private
    [ORPostcode] => private
    [ORTelephone] => private
    [ACTIEFINDUITSLAND] => Ja
    [GESPREKSVELDSIMPLICATE] => private
    [organisatie grootte] => Onbekend
    [B2B of B2C] => Onbekend
    [doel groep] => Onbekend
    [situatie in duitsland] => Onbekend
    [URL] => private
    [contactpersonen] => private
    [simplicate_id] => private
)

只有一次,但我希望循环的每个实例都存储在数组中。

我的期望是:

 1(
        [DEXCODE] => 
        [LAND] => Country_The Netherlands
        [CP GENDER] => heer
        [OROrganisation] => private
        [STRAATNAAM] => private
        [ORCITY] => private
        [OREMAIL] => private
        [ORWEBSITE] => private
        [CP_PHONE] => private
        [first_name] => private
        [last name] => private
        [FUNCTIE] => private
        [CPMobile] => private
        [CPEmail1] => private
        [ORPostcode] => private
        [ORTelephone] => private
        [ACTIEFINDUITSLAND] => Ja
        [GESPREKSVELDSIMPLICATE] => private
        [organisatie grootte] => Onbekend
        [B2B of B2C] => Onbekend
        [doel groep] => Onbekend
        [situatie in duitsland] => Onbekend
        [URL] => private
        [contactpersonen] => private
        [simplicate_id] => private
    )
    2(
        [DEXCODE] => 
        [LAND] => Country_The Netherlands
        [CP GENDER] => heer
        [OROrganisation] => private
        [STRAATNAAM] => private
        [ORCITY] => private
        [OREMAIL] => private
        [ORWEBSITE] => private
        [CP_PHONE] => private
        [first_name] => private
        [last name] => private
        [FUNCTIE] => private
        [CPMobile] => private
        [CPEmail1] => private
        [ORPostcode] => private
        [ORTelephone] => private
        [ACTIEFINDUITSLAND] => Ja
        [GESPREKSVELDSIMPLICATE] => private
        [organisatie grootte] => Onbekend
        [B2B of B2C] => Onbekend
        [doel groep] => Onbekend
        [situatie in duitsland] => Onbekend
        [URL] => private
        [contactpersonen] => private
        [simplicate_id] => private
    )
    3(
        [DEXCODE] => 
        [LAND] => Country_The Netherlands
        [CP GENDER] => heer
        [OROrganisation] => private
        [STRAATNAAM] => private
        [ORCITY] => private
        [OREMAIL] => private
        [ORWEBSITE] => private
        [CP_PHONE] => private
        [first_name] => private
        [last name] => private
        [FUNCTIE] => private
        [CPMobile] => private
        [CPEmail1] => private
        [ORPostcode] => private
        [ORTelephone] => private
        [ACTIEFINDUITSLAND] => Ja
        [GESPREKSVELDSIMPLICATE] => private
        [organisatie grootte] => Onbekend
        [B2B of B2C] => Onbekend
        [doel groep] => Onbekend
        [situatie in duitsland] => Onbekend
        [URL] => private
        [contactpersonen] => private
        [simplicate_id] => private
    )

标签: phparrays

解决方案


你应该这样做而不是使用$jsonstring = array_merge($jsonstring , $body); 它会在每个循环中生成数组

$jsonstring[] = $body;

推荐阅读