多维php数组不工作
嗨,我正在尝试创建多维数组,但遇到了问题。我有一个多维数组,我正试图把其他数组推到它上面。在数组中创建并推送数组多维php数组不工作,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,嗨,我正在尝试创建多维数组,但遇到了问题。我有一个多维数组,我正试图把其他数组推到它上面。在数组中创建并推送数组 $initialChild = $selectorDetailsArray[0]; $selectorDetailsMultiDimArray = array(); $multiDimHoldArray = array(); for($r=0;$r<count($selectorD
$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;
我无法让它推动第二个阵列-我一定是错过了什么
我已经尝试了我能想到的一切,但不明白为什么第二个数组(已经创建)没有被推到多维数组上
任何帮助都是非常好的我不确定代码的总体目的是什么,但我确实理解您试图获得的结果,我也理解它为什么不起作用。我已经注释了我的代码,所以您应该能够看到它在做什么。我首先在代码中创建了一个数组,但我认为它可以与您得到的任何数组一起工作,即使您没有显示它是如何生成的
最好给出一个简短的示例,说明原始数组的外观以及所需的数组应该是什么,因为很难确切地说出您正在做什么。原始数组是一个显示有12个条目的数组,所需的输出是一个多维数组,有两个数组,一个如图所示,例如1,0,29,64,另一个是1,69,29,65,所以我使用第一个数字0,3,6等作为索引-最初是65,然后是66来创建两个数组,然后将这两个数组从提供的日志推到多维数组上。很明显,
否则
部分永远不会执行(因为没有消息初始子项是…
并且更改后的初始子项是
)。如果(intval($selectorDetailsArray[$r])==intval($initialChild))在中尝试执行什么操作
?它确实转到了else。我已经检查过了。初始数组包含12个条目。数组是4个三个值的批次。第一个值是65或66。这定义了以下值应该进入哪个数组。因此,代码在12个条目数组中循环,查看第一个值。如果它是65,则会推送以下两个v将值保存到数组中。当值达到66时,它会将数组保存到多数组中,并开始创建新数组
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
)
)
$selectorDetailsArray = Array(65,1,0,65,29,64,66,1,69,66,29,65);
$initialChild = $selectorDetailsArray[0];
$selectorDetailsMultiDimArray = array();
$multiDimHoldArray = array();
$loopstrings = array(" :: 1st loop :: "," :: 2nd loop :: "," :: 3rd loop :: "," :: 4th loop :: ");
$loop = 0;
$dim = 0;
for($r=0;$r<count($selectorDetailsArray);$r+=3){
echo "<br>START".$loopstrings[$loop]."<br>";
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>";
}else{
array_push($selectorDetailsMultiDimArray,$multiDimHoldArray);
$multiDimHoldArray = array();
// This needs to be here because the "if" is not run during this loop...
array_push($multiDimHoldArray,$selectorDetailsArray[$r+1],$selectorDetailsArray[$r+2]);
echo "initial child is ".$initialChild."<br>";
$initialChild = $selectorDetailsArray[$r];
echo "initial child after change is ".$initialChild." -- ($ r = $r)<br>";
}
echo "<br>END".$loopstrings[$loop++]."<br>";
}
// We push one last time since it successfully pushed twice more in the "if" but never ran the "else" a final time...
array_push($selectorDetailsMultiDimArray,$multiDimHoldArray);
echo "<br>";
echo "<br>BEGIN OUTPUT<br>";
print "<pre>";
print_r($selectorDetailsArray);
print_r($multiDimHoldArray);
print_r($selectorDetailsMultiDimArray);
print "</pre>";
START :: 1st loop ::
Test vars are 65 : 65
r is 0
values are 1 0
END :: 1st loop ::
START :: 2nd loop ::
Test vars are 65 : 65
r is 3
values are 29 64
END :: 2nd loop ::
START :: 3rd loop ::
Test vars are 66 : 65
initial child is 65
initial child after change is 66 -- ($ r = 6)
END :: 3rd loop ::
START :: 4th loop ::
Test vars are 66 : 66
r is 9
values are 29 65
END :: 4th loop ::
BEGIN OUTPUT
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
)
Array
(
[0] => 1
[1] => 69
[2] => 29
[3] => 65
)
Array
(
[0] => Array
(
[0] => 1
[1] => 0
[2] => 29
[3] => 64
)
[1] => Array
(
[0] => 1
[1] => 69
[2] => 29
[3] => 65
)
)