0

私はPHPが初めてです。for ループの条件値に基づいて変数名を生成したいと考えています。これは私のコードです。

  <?php
    for ( $i = 1; $i < $totalcolumns; $i++ ) 
{
  $pattern1 .= '\$'.'a'.$i'';
}
$pattern = str_repeat ('%d', $totalcolumns);

上記のコードに従って、totalcolumns の値に従って %d を生成する $pattern を定義しました。$pattern 部分は、以下のループで完全に問題ありません。

while (fscanf ($file,'\''.$pattern.'\'','\''.$pattern1.'\''))

たとえば、totalcolumns の値が 3 の場合、上記の while ループは次のように展開されます。

while (fscanf ($file,'%d%d%d',$a1,$a2,$a3))

パターンが正しく展開されていることを、echo ステートメントを使用して確認しました。ただし、パターン 1 を生成するためのコードを含めると、プログラムは何も出力しません。

変数 pattern1 を使用してパターン $a1、$a2、$a3 を生成しようとしています。PHP の文字列連結を使用していますが、画面に出力が表示されません。誰かが私を正しい方向に導いてくれますか?

4

2 に答える 2

0
<?php
$totalcolumns = 3
for ( $i = 1; $i <= $totalcolumns; $i++ ){
    $pattern1 .= '$a' . $i . ', ';
}
//remove the last comma and space.
$pattern1 = rtrim($pattern1, ", ");
echo $pattern1;
//$a1, $a2, $a3

完全に基づいています:「パターン $a1、$a2、$a3 を生成しようとしています」

一重引用符でドル($)記号をエスケープする必要もないと確信しています。

"\$"

'$'

次に、出力で何かをしたい場合

<?php
$filledInString = str_replace('$a1', "REPLACED!", $pattern1);
$filledInString = str_replace('$a3', "AGAIN!", $filledInString);
echo $filledInString;
//REPLACED!, $a2, AGAIN!
?>

または、変数変数を探しているだけかもしれませんが、これがあなたが求めていたものかもしれません。わかりません、それが役に立てば幸いです:-)

于 2013-10-03T22:02:32.413 に答える