我正在使用PHP。我有一个多维数组。
这个想法应该存在子阵列[65] [1]和[155] [1]。同时,应该存在子阵列[65] [2]和[155] [2]。
换句话说,[nn] [1]和[nn] [2]必须存在。
我希望能够自动添加不存在的子数组。我不知道如何使用PHP。
所以,我正在寻找一个遍历数组并创建不存在的子数组的代码。
这是一个例子。
Array (
[65] => Array (
[1] => Array (
[2] => Array (
[points] => 0000000600
[competition] => 0000000011
)
)
)
[155] => Array (
[1] => Array (
[2] => Array (
[points] => 0000000900
[competition] => 0000000011
)
)
[2] => Array (
[1] => Array (
[points] => 0000000750
[competition] => 0000000025
)
)
)
}
但是,子阵列[65] [2]不存在。
如上所述,我正在寻找一个遍历数组并创建不存在的子数组的代码。
结果应如下所示:
Array (
[65] => Array (
[1] => Array (
[2] => Array (
[points] => 0000000600
[competition] => 0000000011
)
)
/* this should be added automatically */
[2] => Array (
[1] => Array (
[points] => 0000000000
[competition] => 0000000000
)
)
)
/* */
[155] => Array (
[1] => Array (
[2] => Array (
[points] => 0000000900
[competition] => 0000000011
)
)
[2] => Array (
[1] => Array (
[points] => 0000000750
[competition] => 0000000025
)
)
)
}
答案 0 :(得分:0)
如果我理解正确,主阵列中的所有元素本身就是数组,并且每个元素都必须同时具有[1]和[2]元素。您可以使用array_key_exists()
功能检查此项。类似的东西:
foreach($rg as $rgkey) {
if(!array_key_exists(1,$rg[$rgkey])) {
/* code to initialize $rg[$rgkey][1] */ }
if(!array_key_exists(2,$rg[$rgkey])) {
/* code to initialize $rg[$rgkey][2] */ }
}
答案 1 :(得分:0)
遍历结构的前两个级别,然后检查所需的第三级键(如果不存在),请使用翻转键将默认数据填充到新的子数组中。
代码:(Demo)
foreach ($rg as $id1 => $level2) {
foreach ($level2 as $id2 => $level3) {
$id3 = key($level3);
if (!isset($level2[$id3])) {
$rg[$id1][$id3][$id2] = [
'points' => '0000000000',
'competition' => '0000000000'
];
}
}
}
var_export($rg);
输出:
array (
65 =>
array (
1 =>
array (
2 =>
array (
'points' => '0000000600',
'competition' => '0000000011',
),
),
2 =>
array (
1 =>
array (
'points' => '0000000000',
'competition' => '0000000000',
),
),
),
155 =>
array (
1 =>
array (
2 =>
array (
'points' => '0000000900',
'competition' => '0000000011',
),
),
2 =>
array (
1 =>
array (
'points' => '0000000750',
'competition' => '0000000025',
),
),
),
)