Php 如何系统地合并阵列而不丢失数据?
因此,我试图编写一个方法,将所有数组合并为一个特定的键值,但我遇到的问题是,当我尝试取消设置数组时,它会跳过一些事情,从而避免重复结果,这让我感到困惑。因此,任何关于如何改进此方法的建议都将不胜感激。我还有一个问题。。有没有办法检查这些数组中的每一个是否都有我正在寻找的全部4个键 “发布日期”=> “电子表格和传单月”=> “在每月更新中发布广告”=> “目录中的功能”=> 所以我正在做的是在db中合并具有相同id的数组,这样我就不必做一些非常讨厌的SQL查询,但我想知道是否有一种方法可以确保每个结果中都包含所有4个键。。。如果有一个值与一个或多个关联。。我的方法将把值添加到它的键中,如果没有与键关联的值,它将只生成一个空字符串Php 如何系统地合并阵列而不丢失数据?,php,arrays,Php,Arrays,因此,我试图编写一个方法,将所有数组合并为一个特定的键值,但我遇到的问题是,当我尝试取消设置数组时,它会跳过一些事情,从而避免重复结果,这让我感到困惑。因此,任何关于如何改进此方法的建议都将不胜感激。我还有一个问题。。有没有办法检查这些数组中的每一个是否都有我正在寻找的全部4个键 “发布日期”=> “电子表格和传单月”=> “在每月更新中发布广告”=> “目录中的功能”=> 所以我正在做的是在db中合并具有相同id的数组,这样我就不必做一些非常讨厌的SQL查询,但我想知道是否有一种方法可以确保每
protected function array_with_same_val($array, $key) {
for($i = 0; $i < count($array); $i++) {
for($j = 1; $j < count($array); $j++) {
if(isset($array[$j]) && isset($array[$i]) && $array[$i][$key]==$array[$j][$key]) {
$temp = array_merge($array[$i], $array[$j]);
$array[$i] = $temp;
//unset($array[$j]);
}
}
}
return $array;
}
在此方面的任何帮助都将不胜感激 试试这个($input是您上面提供的数组)
底部的数组\u值调用只是为了从数组中删除字符串键。是否只有一个数组?您能提供一个数组的示例吗?刚才添加了一个示例“如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个值。但是,如果数组包含数字键,则后一个值将不会覆盖原始值,而是将被追加。”因此,可能
foreach($array[$j]as$key=>$val)$array[$i][$key]=$val你想合并那些有相同“cp_id”的吗?你是我的英雄。。。非常感谢你!它的工作非常完美!
'0' => array
(
'Release Date' => 'September 1, 2013',
'cp_id' => '112960'
),
'1' => array
(
'Spreadsheet and Flyer Month' => 'September 1, 2013',
'cp_id' => '112960'
),
'2' => array
(
'Advertise in Monthly Update' => 'September 1, 2013',
'cp_id' => '112960'
),
'3' => array
(
'Release Date' => 'September 1, 2013',
'cp_id' => '109141'
),
);
$output = array();
$requiredKeys = array('Release Date' => '', 'Spreadsheet and Flyer Month' => '', 'Advertise in Monthly Update' => '', 'Feature in Catalog' => '');
foreach ($input as $item) {
if (array_key_exists($item['cp_id'], $output)) {
$output[$item['cp_id']] = array_merge($output[$item['cp_id']], $item);
} else {
$output[$item['cp_id']] = array_merge($requiredKeys, $item);
}
}
$output = array_values($output);