2017-02-20 82 views
0

我有多个数组,我想要一个只有键的数组,但要确保键的顺序保持不变。按顺序合并两组数组键

这个项目的结果是每个元素都被放入一个CSV中。现在我想让标签数组成为工作表中的第一行,然后每行都应该跟着。一些数据阵列将有更多的细节,注意Label 3.x

$aArr1 = array (
    'Label 1' => 'Value', 
    'Label 2' => 'Value', 
    'Label 3.1' => 'Value', 
    'Label 4' => 'Value', 
    'Label 5' => 'Value', 
    'Label 6' => 'Value' 
); 

$aArr2 = array (
    'Label 1' => 'Value', 
    'Label 2' => 'Value', 
    'Label 3.1' => 'Value', 
    'Label 3.2' => 'Value', 
    'Label 3.3' => 'Value', 
    'Label 4' => 'Value', 
    'Label 5' => 'Value' 
); 

$aArr3 = array (
    'Label 1' => 'Value', 
    'Label 2' => 'Value', 
    'Label 3.1' => 'Value', 
    'Label 3.2' => 'Value' 
) 

$aDesiredLabelArr = array (
    'Label 1', 
    'Label 2', 
    'Label 3.1', 
    'Label 3.2', 
    'Label 3.3', 
    'Label 4', 
    'Label 5', 
    'Label 6' 
); 

我的输入为$aArr1$aArr2 & $aArr3。我期望的输出是$aDesiredLabelArr。我正在用PHP编写。

谢谢!

+0

关键'标签3'怎么办? –

+0

你是在寻找'钥匙'这一对'钥匙'和'价值'......的阵列......钥匙'标签3?' –

+1

@Ayaou ......好点,不是要在那里:)但基本上,当添加任何键时(例如在foreach循环中),它们应该被添加到相关位置中的$ aDesiredLabelArr中。 – Chris

回答

1
$result = array_keys(array_merge($aArr1, $aArr2, $aArr3)); 
sort($result, SORT_REGULAR); 


[ 
    (int) 0 => 'Label 1', 
    (int) 1 => 'Label 2', 
    (int) 2 => 'Label 3.1', 
    (int) 3 => 'Label 3.2', 
    (int) 4 => 'Label 3.3', 
    (int) 5 => 'Label 4', 
    (int) 6 => 'Label 5', 
    (int) 7 => 'Label 6' 
] 
+0

谢谢你的答案,但排序会默认按字母顺序对数组进行排序吗?这些标签只是例如,实际上这些值可以是任何东西。 – Chris

+0

默认排序是'SORT_REGULAR',你可以根据你的意愿 –

+0

谢谢你改变那个标志。考虑过这个问题后,我认为这个问题主要是因为我的代码需要重构,并且有更高效的方法来实现它。鉴于这是一个完全有效且很好的答案,并且在大多数情况下都是正确的方法,我会将其标记为已接受。 – Chris