2012-06-25 141 views
0

我試圖想出一種方式結合兩個數組具有不同的鍵名稱相同的值?匹配值的順序可能不同,因此需要檢查它是否匹配,如果是則合併。有沒有簡單的方法來完成?任何幫助或指導表示讚賞。PHP將兩個數組與具有相同值的不同鍵相結合?

陣列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 
    ) 
) 
+0

是在LOCATION_ID和hours_locationid總是相同的? – ametren

+1

它將始終與現有字段具有相同的價值,因爲您需要他? –

+0

有些時候hours_locationid不存在。我有兩個數據庫表。一個位置,一個小時。我需要檢查是否設置了小時。我認爲將它合併到一個數組中並解析我的視圖文件會更容易。但也許我正在討論這個錯誤? – MAZUMA

回答

0

試試下面這個,

替換$陣列1和$數組2 - >演示: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; 
} 
?> 
+0

這個答案適用於我問。最終,儘管我最終處理了查詢中的所有內容並將其作爲一個數組輸出。 – MAZUMA

0
foreach($array1 as $i => $data) { 
    if(array_search(array('hours_locationid'=>$data['location_id']), $array2) !=== false) 
    $array1[$i]['hours_locationid'] = $data['location_id']; 
} 
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); 

應該工作,雖然作爲精神疾病提一下在評論這是相當瑣碎

相關問題