php - 如何在 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
)
解决方案
你应该这样做而不是使用$jsonstring = array_merge($jsonstring , $body);
它会在每个循环中生成数组
$jsonstring[] = $body;
推荐阅读
- typescript - 将 Typescript Record 或类字典类型与固定键类型合并?
- c# - 使用 ADO.NET 的批处理操作
- c - C中动态二维数组的限制
- jquery - 更改事件的 JQuery 在弹出窗口中不起作用
- boost - How to build boost libraries using cmake
- java - 如果spring jpa中不存在列,如何将实体属性默认值标记为null
- python-3.x - 替换数据框中单元格内的多个值 - Python/Pandas
- python - 为什么代码在 kivy 启动器中不起作用?(我错过了什么?)
- html - 如何垂直居中大于其父对象的对象?
- javascript - 如何用 JS/jQuery 解决这个问题(活动菜单类)的想法