Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多维php数组不工作_Php_Arrays_Multidimensional Array - Fatal编程技术网

多维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
            )

    )