2017-07-31 29 views
4

PHPはvariadic functionsのスプレッド演算子をサポートしています。配列宣言のPHPスプレッド演算子

JavaScriptでは、あなたはthisを行うには、拡散演算子を使用することができます。

var a = [1, 2]; 
var b = [...a, 3, 4]; 
console.log(b); // [1, 2, 3, 4] 

をしかし、PHPでこれをやろうとしている:このエラーで

$a = [1, 2]; 
$b = [...$a, 3, 4]; 
var_dump($b);die; 

結果:

Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']'

このように普及している演算子をPHPで使用することはできませんか?もしそうなら、同じ効果を達成するために同じように優雅な方法がありますか?

+4

いいえ、PHPには魔法のショートカット構文はありません:基本的な '$ b = array_merge($ a、[3、4]);' –

答えて

3

まず、間違った意味で配列を使ってVariadic関数を参照しています。

これを行うための独自の方法を作成することもできますし、@ Mark Park氏の提案に従って、array_mergeを使用することもできます。

スプレッド演算子/ ...を使用したい場合は、このような方法で自分で実装することができます。

<?php 
function merge($a, ...$b) { 
    return array_merge($a,$b); 
} 

$a = [1, 2]; 
$b = [3,4]; 
print_r(merge($a, ...$b)); 
?> 

私には、このようにするのは愚かです。あなたはまだarray_mergeのようなものを使用しなければならないからです。言語がこれを実装しても、言語の後ろには、2つの配列のすべての要素を1つの配列にコピーするコードを含むmerge関数が使用されています。 あなたがこれを行う方法を尋ねたからといって、私はこの答えを書いていました。あなたの要求はelegancyでした。

関連する問題