好吧,如果觉得这应该非常简单并且通过像array_merge()
或array_merge_recursive
这样的函数来完成,但我无法弄明白。我有两个简单的数组,如下面的(简化)示例。我只想根据它们的索引将它们合并到一个数组中。
$ array 1:
Array (
[0] => Array (
[ID] => 201
[latLng] => 45.5234515, -122.6762071
)
[1] => Array (
[ID] => 199
[latLng] => 37.7931446, -122.39466520000002
)
)
等等......
$ array2:
Array (
[0] => Array (
[distance] => 1000
[time] => 10
)
[1] => Array (
[distance] => 1500
[time] => 15
)
)
$ desiredResult:
Array (
[0] => Array (
[ID] => 201
[latLng] => 45.5234515, -122.6762071
[distance] => 1000
[time] => 10
)
[1] => Array (
[ID] => 199
[latLng] => 37.7931446, -122.39466520000002
[distance] => 1500
[time] => 15
)
)
当我尝试使用合并函数合并它们时,我只能得到这个:
$ unDesiredResult:
Array (
[0] => Array (
[ID] => 201
[latLng] => 45.5234515, -122.6762071
)
[1] => Array (
[ID] => 199
[latLng] => 37.7931446, -122.39466520000002
)
[2] => Array (
[distance] => 1000
[time] => 10
)
[3] => Array (
[distance] => 1500
[time] => 15
)
)
我是否需要循环将第二组推入第一组,或者可以使用现有功能完成?
答案 0 :(得分:9)
我认为没有为你做这个功能,你必须循环。
$result = array();
foreach($array1 as $key=>$val){ // Loop though one array
$val2 = $array2[$key]; // Get the values from the other array
$result[$key] = $val + $val2; // combine 'em
}
或者您可以将数据推送到$ array1,因此您需要创建第3个数组:
foreach($array1 as $key=>&$val){ // Loop though one array
$val2 = $array2[$key]; // Get the values from the other array
$val += $val2; // combine 'em
}
答案 1 :(得分:3)
您需要使用循环。尝试创建一个函数:
function addArray( array &$output, array $input ) {
foreach( $input as $key => $value ) {
if( is_array( $value ) ) {
if( !isset( $output[$key] ) )
$output[$key] = array( );
addArray( $output[$key], $value );
} else {
$output[$key] = $value;
}
}
}
然后:
$combinedArray = array( );
addArray( $combinedArray, $array1 );
addArray( $combinedArray, $array2 );
答案 2 :(得分:1)
示例必须合并数组:
[location_coordinates] => Array
(
[0] => 36.037939100000,-78.905221600000
[1] => 36.004398400000,-78.936084600000
)
[tm_field_reference_locations$field_location_address$city] => Array
(
[0] => Durham
[1] => Durham
)
[doctor_city] => Array
(
[0] => Durham
[1] => Durham
)
[tm_field_reference_locations$field_location_address$street] => Array
(
[0] => 407 Crutchfield Street
[1] => 40 Duke Medicine Circle
)
[tm_field_reference_locations$field_office_phone] => Array
(
[0] => 919-479-4120
[1] => 919-613-0444
)
[sm_field_reference_locations$title] => Array
(
[0] => Duke Regional Hospital Spine and Neurosciences
[1] => Duke Spine Center
)
如下所示循环:
$address= array();
for($n=0; $n<sizeof($kolDetails['location_coordinates']); $n++){
$address[$n]['org_institution_id']=$kolDetails['sm_field_reference_locations$title'][$n];
$address[$n]['longitude']=$kolDetails['location_coordinates'][$n];
$address[$n]['City']=$kolDetails['doctor_city'][$n];
$address[$n]['address1']=$kolDetails['tm_field_reference_locations$field_location_address$street'][$n];
$address[$n]['phone_number']=$kolDetails['tm_field_reference_locations$field_office_phone'][$n];
}
$kolextra['adress']=$address;
pr($kolextra['adress']);
$address = array();
答案 3 :(得分:0)
我会以一个间隔稍微改变一下。这假设您的值始终被锁定,并且array1的第一条记录始终与array2的第一条记录对应:
$i = 0; // sets counter
$end = count($array1); // finds record number
while($i <= $end){ //for each record in the array
$array1[$i]['distance'] = $array2[$i]['distance']; //match up array values
$array1[$i]['time'] = $array2[$i]['time']; //match up array values
$i++; //iterate
}
祝你好运!