0

異なるキー名を持つ 2 つの配列を同じ値で結合する方法を考え出そうとしていますか? 一致する値の順序は異なる場合があるため、一致するかどうかを確認し、一致する場合はマージする必要があります。達成する簡単な方法はありますか?ヘルプやガイダンスをいただければ幸いです。

配列 1

Array
(
[0] => Array
    (
        [location_id] => 1
        [location_title] => Centralia
        [location_slug] => Centralia
        [state_name] => Illinois
    )

[1] => Array
    (
        [location_id] => 3
        [location_title] => Columbia
        [location_slug] => columbia
        [state_name] => Illinois
    )

[2] => Array
    (
        [location_id] => 15
        [location_title] => Dixon Hennepin
        [location_slug] => dixon-hennepin
        [state_name] => Illinois
    )
)

アレイ 2

Array
(
[0] => Array
    (
        [hours_locationid] => 3
    )

[1] => Array
    (
        [hours_locationid] => 1
    )

[2] => Array
    (
        [hours_locationid] => 15
    )
)

結果

Array
(
[0] => Array
    (
        [location_id] => 1
        [location_title] => Centralia
        [location_slug] => Centralia
        [state_name] => Illinois
        [hours_locationid] => 1
    )

[1] => Array
    (
        [location_id] => 3
        [location_title] => Columbia
        [location_slug] => columbia
        [state_name] => Illinois
        [hours_locationid] => 3
    )

[2] => Array
    (
        [location_id] => 15
        [location_title] => Dixon Hennepin
        [location_slug] => dixon-hennepin
        [state_name] => Illinois
        [hours_locationid] => 15
    )
)
4

3 に答える 3

0

以下でこれを試してください、

$array1 と $array2 を置き換えます -> デモ: http://codepad.org/1inDuoVe

<?php
$array1 = array(array("a"=>"aaa","b"=>"bbb"),array("x"=>"xxx","y"=>"yyy"));
$array2= array(array("c"=>"ccc"),array("z"=>"zzz"));
$i=0;
$j=0;
foreach($array2 as $single){
    foreach($array1 as $multiple){
        if($i == $j){
            $keys = array_keys($single);

            print $key = $keys[0];
            $multiple = array_push_assoc($multiple,$key,$single[$key]);
            $array1[$j] = $multiple;
        }
        ++$j;
    }
    ++$i;
}

var_dump($array1);

function array_push_assoc($array, $key, $value){
$array[$key] = $value;
return $array;
}
?>
于 2012-06-25T17:49:26.977 に答える
0
foreach($array1 as $i => $data) {
  if(array_search(array('hours_locationid'=>$data['location_id']), $array2) !=== false)
     $array1[$i]['hours_locationid'] = $data['location_id'];
}
于 2012-06-25T17:18:00.670 に答える
0
foreach ($array1 as $val1) {

    foreach ($array2 as $key => $val2) {

        if ($val1['location_id'] == $val2['hours_locationid']) {

            $val1['hours_locationid'] = $val2['hours_locationid'];
            $results[] = $val1;
            unset($array2[$key]);
        }
    }
}

var_dump($results);

コメントで述べたように、これはかなり些細なことですが、うまくいくはずです

于 2012-06-25T17:24:47.413 に答える