我有此代码:
$data = array (
"2018" => array (
"September" => array (
"02" => ("Line 1"),
"02" => ("Line 11"),
"12" => ("Line 2"),
"31" => ("Line 3")
)
)
);
echo '<pre>'; print_r($data); echo '</pre>';
您看到的是重复的键“ 02” 因此,我得到了这个结果
Array (
[2018] => Array (
[September] => Array (
[02] => Line 11
[12] => Line 2
[31] => Line 3
)
)
)
因此[02] => Line 1
丢失了
我想知道如何合并“ 02”键,这样它将变成这样:
"02" => ("Line 1", "Line 11")
我的问题是我从mysql生成了这些数组,所以我需要一个动态代码,而不是诸如“如果9月两次“ 02”则...“
我需要类似if $year > $month
和重复键的内容,然后将其值合并。
答案 0 :(得分:1)
使用array_key_exists()
来检查密钥,然后再进行设置。如果不存在,则为新键创建一个条目,并将新值放在一个项目的数组中。如果确实存在,则只需将新值添加到现有数组的末尾。
// Assume $key is your key and $value is your value.
while (...) {
if (array_key_exists($key, $array)) {
$array[$key][] = $value; // Append the new value to the existing array.
} else {
$array[$key] = [$value]; // Create a new array with the new value in it.
}
}
编辑:我认为在未定义的键上使用数组追加语法会生成警告,但事实并非如此,因此您可以简化为以下内容:
while (...) {
$array[$key][] = $value;
}