在将该行推入结果数组之前,我尝试将数组元素添加到数组中(如果满足特定条件)。
现在,它将值添加为单独的单元素行。
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
)
)
预期结果:
(
[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
)
)
您可以使用临时变量来定义数组。然后你可以根据你的情况决定将另一个元素推入其中。最后,您可以将临时数组推送到您的
$ret1
数组以达到所需的结果。
for ($i=0; $i<5; $i++) {
$arr = ["A$i", "B$i"];
if ($i > 2) {
$arr[] = "C$i";
}
$ret1[] = $arr;
}
您正在做的是在循环的最后 2 次迭代中将 2 个元素推入数组。一个值为
["A3", "B3"]
,另一个值为 ["C3"]
,这只会导致 [["A3", "B3"], ["C3"]]
,这不是您想要的。通过使用临时变量 $arr
,我们推迟将最终数组推送到 $ret1
,直到执行或绕过条件语句之后。
例如,在这个循环的倒数第二次迭代中,
$arr
的值最初是["A3","B3"]
,然后我们基于"C3"
是$arr
,将另一个值$i > 2
推到true
的末尾,这使得 $arr = ["A3","B3","C3"]
,最后我们将 $arr
推到数组的末尾 $ret1
给出最终结果 [ ..., 3 => ["A3","B3","C3"], ...]
这些对你的问题或你的问题都不重要,但我想我会把它扔在那里以防万一。
在 PHP 中,双引号字符串 为您提供自动变量扩展。这意味着
"A$i" === "A" . $i
。所以只是需要考虑一下。此外,还有一种数组的简写语法,自 PHP 5.4.0 起就可用,并且在我个人看来,它比使用传统的 array()
构造更容易编写和阅读。所以
array("A" . $i, "B" . $i) === ["A$i", "B$i"]
。
$ret1[] = something
PHP 自动在
$ret
中创建一个 new
索引。如果您想将另一个字符串追加到刚刚插入到
$ret
的数组中,您可以使用
$ret1[$i][] = "C" . $i;
而不是
$ret1[] = array("C" . $i);
指定当前键。
当空数组在附加到数组时被解包时,不会添加任何元素。
代码:(
演示)
$result = [];
for ($i = 0; $i < 4; ++$i) {
$result[] = [
"A$i",
"B$i",
...$i > 2 ? ["C$i"] : []
];
}
var_export($result);