我想在php中执行解构,就像下面的javascript代码一样:
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a,b,rest);
输出:
10 20 [ 30, 40, 50 ]
如何在php中执行该操作?
我的PHP代码是:
<?php
$array = [10, 20, 30, 40, 50];
// Using the list syntax:
//list($a, $b, $c[]) = $array;
// Or the shorthand syntax:
[$a, $b, $c[]] = $array;
echo "$a<br>$b<br>";
print_r ($c);
?>
哪些打印:
10
20
Array ( [0] => 30 )
但是我想要$c中的“[ 30,40,50 ]”
6条答案
按热度按时间rslzwgfq1#
我使用spread运算符和函数来实现这一点:
请让我知道这是否是正确的方法。
y0u0uwnf2#
不幸的是,这在PHP中的spread参数是不可能的。然而,如果你想达到你的结果,你也可以首先破坏你想要的值。然后对
$c
参数使用array_slice()
函数,如下所示:结果进入:
sf6xfgos3#
数组将继续加载,因此使用
而不是
给予
n3ipq98p4#
PHP不允许使用赋值语句的左侧解包动态数量的数据,因此对于完全动态的一行程序,请使用赋值语句的右侧在前两个元素之后准备/分组数据。
代码:(Demo)
上面的代码片段将按预期用于至少有2个元素的输入数组。
另一种方法是使用“立即调用的函数表达式”(我在这里读到的术语),并从函数签名中声明的变量返回一个关联数组。(Demo)
这种简洁的技术提供了仅维护函数签名以影响返回数组的便利。
不过,要注意的是,在将整个数组馈送给匿名函数之前解包,在相对较大的数组上可能会表现不佳。
bt1cpqcv5#
PHP没有在赋值的左边实现spread运算符。作为一种替代方法,您可以从数组的头部提取元素:
...或:
amrnrhlw6#
你不能像这样直接解构数组
没有直接的方法去解构一个数组。
你可以用一个数组。