17

文字列を変数に分解する方法はありますか?

some_function($min, $max, "3, 20");

$min には値 3 が割り当てられ、$max には値 20 が割り当てられます。

私は単に使用できることを知っています

$data = explode("3, 20");

別の方法があるかどうか疑問に思っています。

4

2 に答える 2

41

PHP の言語構造list()は、配列を代入することにより、変数 (または他の配列キー) への複数の代入を実行できます。

list($min, $max) = explode(",", "3,20");

ただし、値の先頭にスペースがあるtrim()ため、変数にa を適用する$maxか、に置き換えexplode()preg_split('/\s*,\s*/', $string)コンマと周囲の空白で分割する必要があります。

注:割り当てる配列に、変数list()と同じ数の要素が含まれるように注意してください。list()

PHP 5.xでは、配列の要素として値を別の配列に直接割り当てる場合、list()値は PHP 5.x では左から右ではなく、右から左に割り当てられます。つまり、逆方向に (最後の値が最初に) 取り込まれた配列になります。

https://www.php.net/manual/en/migration70.incompatible.php

PHP 7.x ではlist()、要素を配列に直接割り当てる場合、引数は左から右に割り当てられます。つまり、最初の値が受信者配列の最初の要素になります。

<?php
    list($a[], $a[], $a[]) = [1, 2, 3];
    var_dump($a);
?>

PHP マニュアル

PHP 5.X最後の値は最初の要素の位置を取得しますが、受信者は配列でなければなりません (この場合、$a は配列です)!

array(3) {
  [0]=>
  int(3)
  [1]=>
  int(2)
  [2]=>
  int(1)
}

PHP 7.x最初の値が最初の配列要素になります。

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

PHP マニュアル

于 2012-04-05T13:40:32.687 に答える