2013-02-25 88 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