我正在尝试动态合并多个数组。考虑以下三个不同的数组输入:
{
"container_id": [
{
"key_0": "NYKU3922051"
},
{
"key_0": "LACU3922051"
}
],
"out_ref": [
{
"key_0": "CI84621"
},
{
"key_0": "DI1000"
}
],
"in_ref2": [
{
"key_0": "555-1106260-024"
},
{
"key_0": "898-1106260-024"
}
]
}
我正在尝试将三个数组container_id
,out_ref
和in_ref2
动态合并为一个这样的关联数组:
{
"array_one": {
"key_0": "NYKU3922051",
"key_0": "CI84621",
"key_0": "555-1106260-024"
},
"array_two": {
"key_0": "LACU3922051",
"key_0": "DI1000",
"key_0": "898-1106260-024"
}
}
因此,我们上面的内容是将每个数组的第一项合并到一个新数组中。
我不太确定从哪里开始,因为我真的无法解决这个问题。
这是我的PHP:
$arrays = $request->all();
$newArray = [];
foreach ($arrays as $key => $value) {
//???
}
编辑 如果不可能,则新数组不一定需要使用相同的键。
答案 0 :(得分:3)
您最好的选择是跳过“ key_0”并得到如下结果:
array(2) {
["array_one"]=>
array(3) {
[0]=>
string(11) "NYKU3922051"
[1]=>
string(7) "CI84621"
[2]=>
string(15) "555-1106260-024"
}
["array_two"]=>
array(3) {
[0]=>
string(11) "LACU3922051"
[1]=>
string(6) "DI1000"
[2]=>
string(15) "898-1106260-024"
}
}
使用此代码循环并将值分离到两个数组中。
$arr = json_decode($str,true);
foreach($arr as $sub){
$new["array_one"][] = $sub[0]["key_0"];
$new["array_two"][] = $sub[1]["key_0"];
}
var_dump($new);
可以处理任意数量的子数组的动态版本。
我添加了一个计数器,该计数器向上计数并跟踪将值放在哪个数组中。
$i = 1;
foreach($arr as $sub){
foreach($sub as $val){
$new["array_" . $i][] = $val["key_0"];
$i++;
}
$i = 1;
}
var_dump($new);
结果:
array(3) {
["array_1"]=>
array(3) {
[0]=>
string(11) "NYKU3922051"
[1]=>
string(7) "CI84621"
[2]=>
string(15) "555-1106260-024"
}
["array_2"]=>
array(3) {
[0]=>
string(11) "LACU3922051"
[1]=>
string(6) "DI1000"
[2]=>
string(15) "898-1106260-024"
}
["array_3"]=>
array(3) {
[0]=>
string(9) "something"
[1]=>
string(4) "else"
[2]=>
string(4) "here"
}
}
答案 1 :(得分:0)
尝试这样的事情
$arrays = $request->all();
$result = [];
foreach ($arrays as $array) {
foreach ($array as $key_index => $keyObject) {
if(!isset($result['array'.$key_index])) {
$result['array'.$key_index] = ['key_0' => $keyObject['key_0']];
} else {
$result['array'.$key_index]['key_'.count($result['array'.$key_index])] = $keyObject['key_0'];
}
}
}
$keyObject['key_0']
部分可以更改为更具动态性。一种仅用一个元素就可以在关联数组中获取值的方法。
您会得到类似的东西
array(2) {
["array0"]=>
array(3) {
["key_0"]=>
string(11) "NYKU3922051"
["key_1"]=>
string(7) "CI84621"
["key_2"]=>
string(15) "555-1106260-024"
}
["array1"]=>
array(3) {
["key_0"]=>
string(11) "LACU3922051"
["key_1"]=>
string(6) "DI1000"
["key_2"]=>
string(15) "898-1106260-024"
}
}
答案 2 :(得分:0)
为什么不能像这样构造数组,这对您遍历traversing an array in php和https://www.tutorialspoint.com/php/php_arrays.htm的链接很有帮助
{
"array_one": {
"key_0": {
0 : "NYKU3922051",
1 : "CI84621",
2 : "555-1106260-024"
}
},
"array_two": {
"key_0": {
0 : "LACU3922051",
1 : "DI1000",
2 : "898-1106260-024"
}
}