将php中的数组反构为另一个数组

ncecgwcz  于 2023-03-07  发布在  PHP
关注(0)|答案(3)|浏览(156)

我想在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 )

但是我想要"[30,40,50]"的单位是c美元

x6492ojm

x6492ojm1#

不幸的是,在PHP中spread参数是不可能实现的,但是如果你想得到你想要的结果,你也可以先析构你想要的值,然后使用array_slice()函数作为你的$c参数,如下所示:

<?php
$array = [10, 20, 30, 40, 50]; 

// Using the list syntax:
//list($a, $b, $c[]) = $array;

// Or the shorthand syntax:
[$a, $b] = $array;

// Returns the array except the first two elements.
$c = array_slice($array, 2); 

print_r($c);
?>

结果输入:

Array
(
    [0] => 30
    [1] => 40
    [2] => 50
)
balp4ylt

balp4ylt2#

数组会持续加载,因此请使用

[$a, $b, $c[], $c[], $c[]] = $array;

而不是。

<?php
$array = [10, 20, 30, 40, 50]; 
[$a, $b, $c[], $c[], $c[]] = $array;
echo "$a\n$b\n";
print_r($c);
?>

给予

10
20
Array
(
    [0] => 30
    [1] => 40
    [2] => 50
)
vyswwuz2

vyswwuz23#

PHP没有在赋值语句的左侧实现spread运算符。作为一种选择,你可以从数组的头部提取元素:

$rest = [10, 20, 30, 40, 50];
$a = array_shift($rest);
$b = array_shift($rest);
var_dump($a, $b, $rest);
int(10)
int(20)
array(3) {
  [0]=>
  int(30)
  [1]=>
  int(40)
  [2]=>
  int(50)
}

相关问题