【发布时间】:2018-03-02 02:00:39
【问题描述】:
您好,我正在尝试创建一个多维数组,但遇到了问题。我有一个多维数组,我正在尝试将其他数组推到上面。数组是在数组中创建和推送的。
$initialChild = $selectorDetailsArray[0];
$selectorDetailsMultiDimArray = array();
$multiDimHoldArray = array();
for($r=0;$r<count($selectorDetailsArray);$r+=3){
echo "Test vars are ".$selectorDetailsArray[$r]." : ".$initialChild."<br> ";
if(intval($selectorDetailsArray[$r]) == intval($initialChild)){
echo"<br> r is ".$r."<br>";
array_push($multiDimHoldArray,$selectorDetailsArray[$r+1],$selectorDetailsArray[$r+2]);
echo"<br> values are ".$selectorDetailsArray[$r+1]." ".$selectorDetailsArray[$r+2]."<br>";
print "<pre>";
print_r($multiDimHoldArray);
print "</pre>";
}else{
array_push($selectorDetailsMultiDimArray,$multiDimHoldArray);
$multiDimHoldArray = array();
echo "initial child is ".$initialChild."<br>";
$initialChild = $selectorDetailsArray[$r];
echo "initial child after change is ".$initialChild."<br>";
}
}
print "<pre>";
print_r($selectorDetailsMultiDimArray);
print "</pre>";
exit;
输出是这样的
Array
(
[0] => 65
[1] => 1
[2] => 0
[3] => 65
[4] => 29
[5] => 64
[6] => 66
[7] => 1
[8] => 69
[9] => 66
[10] => 29
[11] => 65
)
Test vars are 65 : 65
r is 0
values are 1 0
Array
(
[0] => 1
[1] => 0
)
Test vars are 65 : 65
r is 3
values are 29 64
Array
(
[0] => 1
[1] => 0
[2] => 29
[3] => 64
)
Test vars are 66 : 65
initial child is 65
initial child after change is 66
Test vars are 66 : 66
r is 9
values are 29 65
Array
(
[0] => 29
[1] => 65
)
Array
(
[0] => Array
(
[0] => 1
[1] => 0
[2] => 29
[3] => 64
)
)
我无法让它推送第二个数组 - 我一定是遗漏了什么?
我已经尝试了所有我能想到的方法,但无法弄清楚为什么第二个数组(已创建)没有被推送到多维数组中。
任何帮助都会很棒
【问题讨论】:
-
最好展示一个简短的示例来说明原始数组的外观以及所需的数组应该是什么 - 因为很难准确地说明您在做什么。跨度>
-
原始数组是显示的具有 12 个条目的数组,所需的输出是具有两个数组的多维数组,其中一个显示为例如1、0、29、64 和另一个 1、69、29、65 所以我使用第一个数字 0、3、6 等作为索引 - 最初是 65,然后是 66 来创建两个数组,然后推送它们将两个数组放到多维数组上
-
从提供的日志中可以清楚地看出
else部分从未被执行(因为没有消息nitial child is...和initial child after change is)。你想在if(intval($selectorDetailsArray[$r]) == intval($initialChild))做什么? -
它确实去了 else。我已经检查过了。初始数组包含 12 个条目。该数组是 4 批三个值。第一个值是 65 或 66。这定义了以下值应该进入哪个数组。因此代码循环遍历 12 个条目数组,查看第一个值。如果它是 65,那么它将以下两个值推送到一个数组中。当它达到 66 值时,它将数组保存到多数组中并开始创建一个新数组
标签: php arrays multidimensional-array