Php 向多维数组添加条目

Php 向多维数组添加条目,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,如果满足某个条件,我会尝试向数组中添加一个数组元素,然后再将该数组推送到另一个数组中。现在,它将值作为单独的数组进行添加,但它不在同一数组中 <?php for ($i = 0; $i < 4; $i++) { $ret1[] = array("A" . $i, "B" . $i); if ($i > 2) { $ret1[] = array("C" . $i); } } print_r($ret1); ?> 当

如果满足某个条件,我会尝试向数组中添加一个数组元素,然后再将该数组推送到另一个数组中。现在,它将值作为单独的数组进行添加,但它不在同一数组中

<?php

for ($i = 0; $i < 4; $i++) {
    $ret1[] = array("A" . $i, "B" . $i);
    if ($i > 2) {
        $ret1[] = array("C" . $i);
    }
}    

print_r($ret1);

?>

当前结果:

Array
(
    [0] => Array
        (
            [0] => A0
            [1] => B0
        )

    [1] => Array
        (
            [0] => A1
            [1] => B1
        )

    [2] => Array
        (
            [0] => A2
            [1] => B2
        )

    [3] => Array
        (
            [0] => A3
            [1] => B3
        )

    [4] => Array
        (
            [0] => C3
        )

)
Array
(
    [0] => Array
        (
            [0] => A0
            [1] => B0
        )

    [1] => Array
        (
            [0] => A1
            [1] => B1
        )

    [2] => Array
        (
            [0] => A2
            [1] => B2
        )

    [3] => Array
        (
            [0] => A3
            [1] => B3
            [2] => C3
        )

)
数组
(
[0]=>阵列
(
[0]=>A0
[1] =>B0
)
[1] =>阵列
(
[0]=>A1
[1] =>B1
)
[2] =>阵列
(
[0]=>A2
[1] =>B2
)
[3] =>阵列
(
[0]=>A3
[1] =>B3
)
[4] =>阵列
(
[0]=>C3
)
)
预期结果:

Array
(
    [0] => Array
        (
            [0] => A0
            [1] => B0
        )

    [1] => Array
        (
            [0] => A1
            [1] => B1
        )

    [2] => Array
        (
            [0] => A2
            [1] => B2
        )

    [3] => Array
        (
            [0] => A3
            [1] => B3
        )

    [4] => Array
        (
            [0] => C3
        )

)
Array
(
    [0] => Array
        (
            [0] => A0
            [1] => B0
        )

    [1] => Array
        (
            [0] => A1
            [1] => B1
        )

    [2] => Array
        (
            [0] => A2
            [1] => B2
        )

    [3] => Array
        (
            [0] => A3
            [1] => B3
            [2] => C3
        )

)
数组
(
[0]=>阵列
(
[0]=>A0
[1] =>B0
)
[1] =>阵列
(
[0]=>A1
[1] =>B1
)
[2] =>阵列
(
[0]=>A2
[1] =>B2
)
[3] =>阵列
(
[0]=>A3
[1] =>B3
[2] =>C3
)
)

您可以使用临时变量来定义数组。然后,您可以根据您的条件决定将另一个元素推送到它。最后,您可以将临时数组推送到
$ret1
数组中,以获得所需的结果

for ($i=0; $i<5; $i++) {
    $arr = ["A$i", "B$i"];
    if ($i > 2) {
        $arr[] = "C$i";
    }
    $ret1[] = $arr;
}    
($i=0;$i 2)的
{
$arr[]=“C$i”;
}
$ret1[]=$arr;
}    
您所做的是在循环的最后2次迭代中将2个元素推送到数组中。一个值为
[“A3”,“B3”]
,另一个值为
[“C3”]
,这只会导致
[[“A3”,“B3”],[“C3”]
,而这不是您想要的。通过使用临时变量
$arr
,我们推迟将最终数组推送到
$ret1
,直到执行或绕过条件语句

例如,在这个循环的倒数第二次迭代中,
$arr
的值最初是
[“A3”,“B3”]
,然后我们根据
$i>2
,将另一个值
$arr=[“A3”,“B3”,“C3”
推到
$arr
的末尾,最后,我们将
$arr
推到数组的末尾
$ret1
给出最终结果
[…,3=>[“A3”,“B3”,“C3”],…]

奖券 这些对你的问题都不重要,但我想我会把它扔出去以防万一


在PHP中,为您提供自动变量扩展。这意味着
“A$i”==“A”$我
。所以有些事情要考虑。此外,还有一个可用的,在我个人看来,它比使用传统的
array()
构造更易于编写和读取。所以
array(“A..i,”B..i)==[“A$i”,“B$i”]

您所做的并不是给您期望的结果,因为每次使用

$ret1[] = something
PHP自动在
$ret
中创建一个新索引


如果要将另一个字符串附加到刚刚插入
$ret
的数组中,可以使用
$ret1[$i][]=“C”指定当前键$一,
而不是
$ret1[]=array(“C”。$i)

只需创建一个if/else语句,如果满足条件,则在一个数组中添加所有3个值,例如,
$ret1[]=array(a,b,c)
否则只需将a和b添加为array。您的示例中有什么不起作用?如果可以的话,请记住第一个参数应该是一个一维数组,因此如果您想添加到第二级数组,那么您需要
array\u push($ret1[INDEX],VALUE)
感谢Rizier123编辑/澄清我的问题。现在更容易理解了…非常好的解释,祝贺你找到了一个说倒数第二的好机会。是的,我通常一年只能说一两次,所以。。。感觉很好:)谢谢你的奖金。这真的使它更容易阅读。