2013-02-25 54 views
-1

可以說我們有動態生成的數組。PHP同步數組鍵

$arr[1]["a"] = "value"; 
    $arr[1]["b"] = "value"; 
    $arr[1]["c"] = "value"; 

    $arr[2]["a"] = "value"; 
    $arr[2]["b"] = "value"; 
    $arr[2]["c"] = "value"; 
    $arr[2]["d"] = "value"; 

    $arr[3]["a"] = "value"; 
    $arr[3]["g"] = "value"; 

生成數組可以被操縱,所以不要把這個例子當作核心線。 正如你看到有不同的密鑰,但最終我們必須得到:

$arr[1]['a'] = 'value'; 
$arr[1]['b'] = 'value'; 
$arr[1]['c'] = 'value'; 
$arr[1]['d'] = 'empty value'; 
$arr[1]['g'] = 'empty value'; 

$arr[2]['a'] = 'value'; 
$arr[2]['b'] = 'value'; 
$arr[2]['c'] = 'value'; 
$arr[2]['d'] = 'value'; 
$arr[2]['g'] = 'empty value'; 

$arr[3]['a'] = 'value'; 
$arr[3]['b'] = 'empty value'; 
$arr[3]['c'] = 'empty value'; 
$arr[3]['d'] = 'empty value'; 
$arr[3]['g'] = 'value'; 

非空值是不同的,所以array_merge也不是那麼用好主意。

+2

你的問題到底是什麼? – Baba 2013-02-25 08:58:41

+0

好吧,我的壞,問題是如何在示例 – sulest 2013-02-25 09:05:30

+0

中看到同步數組的鍵什麼是你的意思'sync'不是真的清楚..... – Baba 2013-02-25 09:06:50

回答

1

我想你想這(這是可怕的效率低下但我的大腦在掙扎)

$keys = array(); 
foreach($arr as $array){ 
    $keys = array_merge($keys, array_keys($array)); 
} 
//$keys now has all unique keys 
foreach($arr as $array){ 
    foreach($keys as $key){ 
     if(!isset($array[$key])){$array[$key] = null} 
    } 
} 

這是未經測試,但我認爲它笑uld work

+0

確實這看起來像唯一的方法。我只是好奇如果有一些棘手的方法來做到這一點。 tnx你的時間 – sulest 2013-02-25 09:25:53

0

我的猜測是要填補默認值的數組...您可以使用array_fill

$keys = array("a","b","c","d","g"); 
$arr[1] = array_combine($keys,array_fill(0, 5, 'empty value')); 


$arr[1]["a"] = "value"; 
$arr[1]["b"] = "value"; 
$arr[1]["c"] = "value"; 


print_r($arr[1]); 

輸出

Array 
(
    [a] => value 
    [b] => value 
    [c] => value 
    [d] => empty value 
    [g] => empty value 
) 
+0

您不知道開始時的鍵數組(「a」,「b」,「c」,「d」,「g」); - nope 沒有關於鍵名的信息以及它們有多少 這是給出這樣的例子的原因。 我會準備一個例子;) – sulest 2013-02-25 09:12:43

+0

那麼你是如何得到'$ arr [1] ['d']'和'$ arr [1] ['g']'末尾 – Baba 2013-02-25 09:16:29

+0

巴巴的我有兩個例子問題 第一個顯示我們有什麼,第二個是我們想要的 ,因爲我在問題 中鍵入的文字很少「但最後我們必須得到:」 所以我如何得到$ arr [1] ['d ']和$ arr [1] ['g'] 猜怎麼着。請下一次閱讀前投票或詢問 感謝您的時間 – sulest 2013-02-25 09:29:25