2015-04-23 58 views
0

我正在嘗試操作關聯多維數組。我已經提取了我想應用於其他值的數組中的鍵。 。 。php將關鍵字與關聯多維數組中的值結合

這些是我在另一個函數所提取的鍵

$keys = array (
    "id" => "id", 
    "addr_street_num" => "addr_street_num", 
    "addr_street" => "addr_street", 
    "price" => "price", 
    "days" =>"days", 
    "state" => Array 
     (
      "id" => "id", 
      "name" => "name" 
     ), 

    "city" => Array 
     (
      "id" => "id", 
      "web_id" => "web_id", 
      "name" => "name" 
     ) 
); 

這個數組我想的價值觀結合在一起

$vals = array (
    "0" => "830680", 
    "1" => "20", 
    "2" => "Sullivan Avenue", 
    "3" => "333000", 
    "4" => "12", 
    "5" => Array 
     (
      "0" => "4", 
      "1" => "Maryland", 
     ), 

    "6" => Array 
     (
      "0" => "782", 
      "1" => "baltimore", 
      "2" => "Baltimore", 
     ) 
); 

當我嘗試做array_combine($鍵,$ val); 我得到2關於數組到字符串轉換的通知

我猜array_combine只能在一維數組上工作,關於如何處理這個數組的任何想法?

如果$鍵被修改,它可以與值相結合 - 問題是$鍵的形狀是我想結束了?

+1

預期產量是? –

+0

第二個數組中的所有鍵與第一個數組中的相同。 – jimlongo

回答

1

它可以遞歸地完成。

function combine_recursive($keys, $values) { 
    $result = array(); 
    $key = reset($keys); 
    $value = reset($values); 
    do { 
     if (is_array($value)) { 
      $result[key($keys)] = combine_recursive($key, $value); 
     } else { 
      $result[key($keys)] = $value; 
     } 
     $value = next($values); 
    } while ($key = next($keys)); 
    return $result; 
} 

這適用於你我的例子數組。如果數組結構彼此不同,我相信這會給你帶來各種奇怪的結果/錯誤。

+0

這個例子很好用,我確實希望數組結構是相同的。謝謝你的幫助。 – jimlongo

+0

不客氣! –