我寻找了一段时间,但找不到类似的问题。
我有一个像这样的数组:
$array = [
"555" => ['Juan', 'Gomez'],
"555" => ['Foo', 'Bar'],
"556" => ['Test', 'Test']
];
我想合并共享相同键的值,所以当我内爆时,它会打印出这样的内容:
"555" => ['Juan', 'Gomez', 'Foo', 'Bar']
"556" => ['Test', 'Test'];
似乎函数array_merge_recursive完成了我想要的。 它将数组分组
$array1 = array('"555"' => array('Juan', 'Gomez'));
$array2 = array('"555"' => array('Foo', 'Bar'));
进入
array_merge_recursive($array1, $array2);
Output:
Array
(
["555"] => Array
(
[0] => Juan
[1] => Gomez
[2] => Foo
[3] => Bar
)
)
但是我要动态地从表中加载值,所以我不能命名每一行,这太疯狂了,有没有一种方法可以使美国仅用一个数组起作用?
我尝试过
$array[] = array('"555"' => array('Juan', 'Gomez'));
$array[] = array('"555"' => array('Foo', 'Bar'));
and array_merge_recursive($array);
但是它并没有完全将它们合并为一个。
答案 0 :(得分:0)
您不能“拥有这样的数组”,因为数组键是唯一的。
因此,您需要返回到创建该数组的位置,并在那里检查该键是否已经存在(如果存在),合并值。
while ($doStuff) {
// $myKey = '555';
// Create an empty array for that key
if (!isset($myArray[$myKey])) {
$myArray[$myKey] = [];
}
// $myListOfNames = ['Juan', 'Gomez']
// Merge the names with the array for that key
$myArray[$myKey] = array_merge($myArray[$myKey], $myListOfNames);
// Or if you just want to add a single value to the list
$myArray[$myKey][] = $myName;
}