-1

私はこれが好きです: これらは私のメニュー項目です:

$menu = 'View archives for '.$year;

$year = 2013; //Note that `$year` is set after the above.

変更を加えずに、どうすればこのようなことを行うことができますか (後で変数の値を設定します)?

私はこれを試みていましたが、失敗しました。

$menu = 'View archives for '. &$year;

$year = '2013';
4

4 に答える 4

1

これを行う最も近い方法は、参照を使用することですが、それでは、コードが汚く、保守不可能で、エラーが発生しやすい地雷原になります。参照が危険な理由がわからない場合は、これをお読みください

$year = null;
$menu = array('View archives for ', &$year);//pass reference to $year
$year = '2013';
echo implode('', $menu);

ご覧のとおり、参照を渡す前に変数を定義する必要があります (当たり前ですが、存在しようとしているものを参照することはできず、存在するものだけを参照することはできません)。
それが完了したら、気まぐれな任意の値を に割り当てることができ、変数を参照するだけなので$year、配列の 2 番目の値が自動的に続きます。$menu$year

それでも、あなたの質問のスニペットがあなたがやろうとしているすべてであるなら、なぜ使用しないのsprintfですか?

$menu = 'View archives for %s';
//some code
$year = '2013';
$menu = sprintf($menu, $year);
echo $menu;//sure enough: View archives for 2013

追加のボーナスとして、これをループで何度も使用できます。

$format = 'View archives for %s';
for ($i=2010;$i<2014;++$i)
{
    printf($format, $i);
    echo '<br/>';
}

これは以下を出力します:

View archives for 2010
View archives for 2011
View archives for 2012
View archives for 2013

および関連する関数のマニュアルを読んだらprintf、簡単です。

于 2013-10-30T15:42:14.490 に答える
0

これは不可能です。の定義は$year、それを使用するすべての定義より前に行う必要があります。

于 2013-10-30T15:40:21.070 に答える
0

プログラム フローの全体的な概念は、変数を使用する前にその値を宣言する必要があるということです。すべての入力が存在するまでコードが実行されないソフトウェアの概念 (フロー プログラミング) は他にもありますが、php はその言語ではありません。

唯一の解決策は、使用する前に の値を初期化し$year、ステートメントの順序を変更することです。

于 2013-10-30T15:41:55.163 に答える
0

年を追加したい場合は、これで作業が完了します $menu = 'View archives for '.date('Y'); 宣言前に変数を使用することはできません

于 2013-10-30T15:42:17.180 に答える