3

私は次のような変数を持っています

<?php
$num1 = 'txt1';
$num2 = 'txt2';
$num3 = 'txt3';   
...

そして、私にはループがあります

for ($i=1; $i<100; $i++){  
   echo 'This is textNr'.$i.':'   .$num.$i  ;
}

次のような結果を生成する必要があります。

これは textNr1: txt1 です


もちろん、このコードを使用すると、次のようなものが得られます。

これは textNr1 です: 「未定義」


$num.$i では $num が定義されていないためです。

$num.$i は 1 回解析されて $num1 になり、次に $num1 は次のように 2 回解析される必要があります。

 echo 'This is textNr'.$i.':'   .$num1  ;

誰もこれを処理する方法を知っていますか?
この問題の専門用語は「可変変数」または「動的変数」です!

4

6 に答える 6

4

次のようにする必要があります。

  $nums = array();
  $nums[0] = 'txt1';
  $nums[1] = 'txt2';

  for ($i=0; $i<100; $i++){  
    echo 'This is textNr'.$i.':'   .$nums[$i]  ;
  }

または、ループ内の 1 から開始する場合は、配列内の 1 からインデックスを開始します。

于 2013-06-03T05:35:29.703 に答える
3

配列 (Antoine の回答) を使用することをお勧めします。しかし、ソリューションを使用したい場合/使用する必要がある場合

for ($i=1; $i<100; $i++){  
   echo 'This is textNr'.$i.':' . ${"num$i"}  ;
}

のおかげで、 PHP は最初"num$i"にその結果を評価してその名前の変数を見つけます。
${ }

詳細については、PHP-Manual (Variable Variables)を参照してください。

より深いレベルの変数名を使用できることに注意してください

$a = "b";
$b = "c";
${${$a}}  = 7; 
echo $c; // echoes 7

配列経由: 配列を宣言することもできます

$array = ('text1', 'text2', 'text3', ... , 'textN');
echo count ( $array ); // echoes N, size of array

その項目を表示するには

// Loop on array
foreach ($array as $text) {
  echo "$text\n";
}

text1text2、... textNを表示します (1 行に 1 つ)

forループを使用することもできます

$n = count($array);
for($i=0 ; $i<$n ; $i++) echo $array[$i] . "\n";

それは同じ出力を生成します。

于 2013-06-03T05:39:25.213 に答える
2

php 変数は、以下の例のように中括弧で構成できます。

echo 'This is textNr'.$i.':'   .${'num'.$i}  . "\r\n" ;

かっこの間に文字列を返すものは何でも入れることができます

于 2013-06-03T05:37:52.433 に答える
1

これを試して:

<?php
$nums = array();
  $nums[0] = 'txt1';
  $nums[1] = 'txt2';

  for ($i=0; $i<count($nums); $i++){  
    echo 'This is textNr'.$i.':'   .$nums[$i]  ;
  }
?>

あなたが選んだ答えの改良版です。配列に設定した値のみが表示されます。

于 2013-06-03T05:56:40.777 に答える
1

あなたが探しているphp用語は「可変変数」です。php は、それをサポートする数少ない言語の 1 つであり、それには正当な理由があります - このアプローチは間違った匂いがします。

于 2013-06-03T05:44:12.857 に答える
0

次のように配列を使用できます。

$nums = array('txt1','txt2','txt3');

for ($i=0; $i<sizeof($nums); $i++){  
    echo 'This is textNr'.$i.':'   .$nums[$i]  ;
}

配列の上限は配列のサイズでなければなりません。そうしないと、$nums[x] で空の値が得られる可能性があります。

于 2013-06-03T05:53:34.510 に答える