PHP数组按日期合并
我有2个数组,每个数组有2个属性 第一个数组: 排列 ( ) 第二个数组: 排列 ( ) 我希望最终的数组如下所示:输出|(在两个数组之间合并,键为uregistredDate: 排列 ( )PHP数组按日期合并,php,arrays,Php,Arrays,我有2个数组,每个数组有2个属性 第一个数组: 排列 ( ) 第二个数组: 排列 ( ) 我希望最终的数组如下所示:输出|(在两个数组之间合并,键为uregistredDate: 排列 ( ) 有什么想法吗,代码片段?我认为内置函数数组\u merge\u recursive()应该是gr8: $array = array_merge_recursive($array1, $array2); 或功能可能会有所帮助 $newarray = Array(); foreach ($arr1 as $
有什么想法吗,代码片段?我认为内置函数数组\u merge\u recursive()应该是gr8:
$array = array_merge_recursive($array1, $array2);
或功能可能会有所帮助
$newarray = Array();
foreach ($arr1 as $element=>$value){
$newarray = array_merge($arr1[$element],$arr2[$element])
}
试试这个代码
function combo($array1, $array2) {
foreach($array1 as $key => $value) {
if(isset($array2[$key]))
$result[$key] = array_merge($value, $array2[$key]);
else
$result[$key] = $value;
}
return $result;
}
$array = combo(#your array 1#, #your array 2#);
print_r($array); // to view the output
更新代码
function combo($array1, $array2) {
foreach($array1 as $key => $value) {
if(isset($array2[$key])) {
if($value['uregisterDate'] == $array2[$key]['uregisterDate'])
{
$result[$key] = array_merge($value, $array2[$key]);
}
else
{
$result[$key] = $array2[$key];
$result[rand(0,99)]= $value;
}
}
else
$result[$key] = $value;
}
return array_values($result);
}
$array = combo($a1, $a2);
print_r($array);
试试这个功能
$array1 = array(
array( "uregisterDate" => '2013-04-03', "total" => 4 ),
array( "uregisterDate" => '2013-04-04', "total" => 4 ),
array( "uregisterDate" => '2013-04-05', "total" => 3 )
);
$array2 = array(
array( "uregisterDate" => '2013-04-03', "totalFailed" => 2),
array( "uregisterDate" => '2013-04-04', "totalFailed" => 3 )
);
function merge_array_common_key($a1, $a2, $Ckey) {
$merge = array_merge($a1,$a2);
$keys = array();
foreach ($merge as $key => $value) {
if(isset($keys[$value[$Ckey]])){
$merge[$keys[$value[$Ckey]]] += $value;
unset($merge[$key]);
continue;
}
$keys[$value[$Ckey]] = $key;
}
return $merge;
}
$test = merge_array_common_key($array1, $array2, 'uregisterDate');
var_dump($test);
尝试以下方法:
function combine( $key, $array1, $array2 )
{
$args = func_get_args();
array_shift( $args );
$return = $args[0];
$arrays = array_slice( $args, 1 );
foreach ( $arrays as $array ) {
foreach ( $array as $arrayValue ) {
$match_found = false;
foreach ( $return as $i => $value ) {
if ( isset( $value[$key] ) && isset( $arrayValue[$key] ) && $value[$key] == $arrayValue[$key] ) {
$return[$i] = array_merge( $value, $arrayValue );
$match_found = true;
}
}
if ( !$match_found ) {
$return[] = $arrayValue;
}
}
}
return $return;
}
$array = combine( "uregisterDate", $array1, $array2 );
为什么不向我们展示一些您已经尝试过的代码。@Yazmat希望基于uregisterDate将两个数组合并为一个数组,但是如何基于uregisterDate合并数据请完成回答您正在匹配主数组键..不是uregisterDate,这是错误的..无法工作。
function combo($array1, $array2) {
foreach($array1 as $key => $value) {
if(isset($array2[$key])) {
if($value['uregisterDate'] == $array2[$key]['uregisterDate'])
{
$result[$key] = array_merge($value, $array2[$key]);
}
else
{
$result[$key] = $array2[$key];
$result[rand(0,99)]= $value;
}
}
else
$result[$key] = $value;
}
return array_values($result);
}
$array = combo($a1, $a2);
print_r($array);
$array1 = array(
array( "uregisterDate" => '2013-04-03', "total" => 4 ),
array( "uregisterDate" => '2013-04-04', "total" => 4 ),
array( "uregisterDate" => '2013-04-05', "total" => 3 )
);
$array2 = array(
array( "uregisterDate" => '2013-04-03', "totalFailed" => 2),
array( "uregisterDate" => '2013-04-04', "totalFailed" => 3 )
);
function merge_array_common_key($a1, $a2, $Ckey) {
$merge = array_merge($a1,$a2);
$keys = array();
foreach ($merge as $key => $value) {
if(isset($keys[$value[$Ckey]])){
$merge[$keys[$value[$Ckey]]] += $value;
unset($merge[$key]);
continue;
}
$keys[$value[$Ckey]] = $key;
}
return $merge;
}
$test = merge_array_common_key($array1, $array2, 'uregisterDate');
var_dump($test);
function combine( $key, $array1, $array2 )
{
$args = func_get_args();
array_shift( $args );
$return = $args[0];
$arrays = array_slice( $args, 1 );
foreach ( $arrays as $array ) {
foreach ( $array as $arrayValue ) {
$match_found = false;
foreach ( $return as $i => $value ) {
if ( isset( $value[$key] ) && isset( $arrayValue[$key] ) && $value[$key] == $arrayValue[$key] ) {
$return[$i] = array_merge( $value, $arrayValue );
$match_found = true;
}
}
if ( !$match_found ) {
$return[] = $arrayValue;
}
}
}
return $return;
}
$array = combine( "uregisterDate", $array1, $array2 );