[英]PHP creating and merging multidimensional arrays
我在创建和合并多维数组时遇到了一些麻烦。 试着解释一下,我有一个动态的“4包输入”。 这些是通过PHP生成的,用户可以添加更多“4包”输入。
这些输入命名为input1[en]
或input1[pt]
。 因此,为了更好地理解input1
的简单$_POST
,它打印出需要分离的foreach的以下数组(仍然是输出2,3和4):
Array(
[en] => Array(
[0] => [C][C]
[1] => [L][L][C]
)
[pt] => Array(
[0] => [C][C]
)
)
现在,我需要创建一个包含输入中所有信息的数组,但是我在第一个数组创建时遇到了麻烦(来自input1)。
使用代码:
foreach($_POST['input1'] as $language => $index){
foreach($index as $newvalue => $index2){
$cernegy[$language] = array(
'energy' => array($newvalue => $index2)
);
}
}
输出是:
Array(
[en] => Array(
[energy] => Array(
[1] => [L][L][C]
)
) [pt] => Array(
[energy] => Array(
[0] => [C][C]
)
)
)
如你所见,它错过了[en]中的键[0]。 所有相同的情况都发生在其他输入上(当同一语言有多个输入时,它只在数组中留下最后一个键(在本例中为[en]))
我的其他foreach是相同的,但将'energy' => array($newvalue => $index2)
更改为'attack' => array($newvalue => $index2)
等等......
然后,第二个问题是合并数组。 如果我合并两个数组(即使有错误的信息),它只保留最后一个合并的数组。 基本上,如果我合并array1
(与array2
生成'energy'
(生成'attack'
),它只保留来自array2
的信息,例如:
Array(
[en] => Array(
[attack_name] => Array(
[1] => RazorLeaf
)
)
[pt] => Array(
[attack_name] => Array(
[0] => Pontapé
)
)
)
它应该是这样的:
Array(
[en] => Array(
[energy] => Array(
[1] => [L][L][C]
)
[attack_name] => Array(
[1] => RazorLeaf
)
)
[pt] => Array(
[energy] => Array(
[0] => [C][C]
)
[attack_name] => Array(
[0] => Pontapé
)
)
)
我用它来合并(数组名称只是示例):
$result = array_merge($array1, $array2);
有人能指出我在两个问题上的正确方向吗? 谢谢你的时间。
编辑:第一部分现在解决了。 现在问题仍然在于合并两个数组。 作为两个数组的示例($ array1和$ array2依次):Array1
Array(
[en] => Array(
[energy] => Array(
[0] => [C][C]
[1] => [L][L][C]
)
)
[pt] => Array(
[energy] => Array(
[0] => [C][C]
)
)
)
ARRAY2
Array(
[en] => Array(
[attack_name] => Array(
[0] => Tackle
[1] => RazorLeaf
)
)
[pt] => Array(
[attack_name] => Array(
[0] => Pontapé
)
)
)
因为我使用$result = array_merge($array1, $array2);
我期待得到:
Array(
[en] => Array(
[energy] => Array(
[0] => [C][C]
[1] => [L][L][C]
)
[attack_name] => Array(
[0] => Tackle
[1] => RazorLeaf
)
)
[pt] => Array(
[energy] => Array(
[0] => [C][C]
)
[attack_name] => Array(
[0] => Pontapé
)
)
)
但我只得到$array2
信息的输出:
Array(
[en] => Array(
[attack_name] => Array(
[0] => Tackle
[1] => RazorLeaf
)
)
[pt] => Array(
[attack_name] => Array(
[0] => Pontapé
)
)
)
我做错了什么?
您正在覆盖该值而不是添加到数组中。 尝试类似的东西:
foreach($_POST['input1'] as $language => $index){
$inner = array();
foreach($index as $newvalue => $index2){
$inner[$newvalue] = $index2;
}
$cernegy[$language] = array('energy' => $inner);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.