0

配列内の項目数に基づいてリストを生成したいので、項目を数えてそれらをループし、数値ベースの var を作成し、$a1、$a2 を含む文字列 $var を作成します。 .... $var を list list($var) に割り当てます

$a1 にアクセスしようとしましたが、「未定義の変数: a1」というエラーが表示されます

それを行う他の方法はありますか?

これが私のコードです:

$arr = array('1','2','3');
$listsize = count($arr);
$var='';
for($i=1;$i<=$listsize;$i++){
        $var.='$a'.$i;
        if($i!=$listsize){
            $var.=',';
        }
}

list($var) = $arr;
echo $a1;
4

3 に答える 3

1

あなたが探しているのはvariable variables です

PHP では、変数名(値だけでなく)を動的に割り当てることができます。

次に例を示します。

$foo = "Hello" . 1;

# In this line, I am taking the value of the variable $foo (Hello1) and
# using that as as a variable name. This is equivalent to
# $Hello1 = "World", except the variable is dynamic (hence variable variables).

$$foo = "World";

print $Hello1; # This will print World
于 2012-09-23T08:23:39.313 に答える
1

extract()を使用しないのはなぜですか?

これを試して:

$values = array('1','2','3');
$variables = array();
$length = count($values);
$key = 'a1';

for ($i = 0; $i < $length; $i++){
  $variables[$key] = $values[$i];
  $key++;
}

extract($variables);
echo $a1, $a2, $a3;
于 2012-09-23T08:36:53.853 に答える
0

ループなしで問題を解決できます。配列 $as には、a1 から aX までのキーを持つデータが格納されます。

$arr = array('1', '2', '3', 'test', true, 4.56);
$keys = array_map(function($n) { return "a$n"; }, range(1, count($arr)) );
$a = array_combine($keys, $arr);

配列 $as には、以下の出力のようなキーと値があります。

Array
(
    [a1] => 1
    [a2] => 2
    [a3] => 3
    [a4] => test
    [a5] => 1
    [a6] => 4.56
)

$a3 のような変数ではなく、$a['a3'] のような配列を介して変数にアクセスすることをお勧めします。

$a1 ... $aX 変数が必要な場合は、次のように配列を抽出します。

extract($a);
于 2012-09-23T09:34:16.740 に答える