2

他の質問/回答を見ましたが、完全には理解していません。さらに、私の正確な質問をする人は見つかりませんでした。

ビジネスの開始時刻と終了時刻を格納する 7 つの配列があります。私の PHP プログラムは現在の日をチェックし、その日の開始終了時刻と一致させます。だから今、私はifこれに似た7つのステートメントを持っています:

if (date(l) == 'Sunday') {
   $start = $SundayAccountingHours['start'];
   $end = $SundayAccountingHours['end'];
 }

私がやりたいことは、コードをクリーンアップすることです。だから多分私は次のようなものを持つことができます

$start = ${$today}.AccountingHours['start'];
$end = ${$today}.AccountingHours['end'];

どうすればこれを機能させることができますか?上記の例を使用すると、次のようになります: Parse error: syntax error, unexpected '[' in C:\xampp\htdocs\Dev.php on line 22 where line 22 is $start is defined. かっこ内のものを取り出すことはできません。これは、私が実際に取得する必要がある情報だからです。

わからない場合は、私はまだ PHP の初心者なので、助けていただければ幸いです。

ありがとう!

4

3 に答える 3

5
if (date(l) == 'Sunday') {
   $start = $SundayAccountingHours['start'];
   $end = $SundayAccountingHours['end'];
 }

まず、それを引用符で囲みます'l'。という名前の定数lを探していますが、文字列のように扱っていることがわかりません。これは非常に悪い習慣です (警告を発行する必要があります)。

次に、多次元配列を使用します。変数名の一部として曜日を使用する必要はありません。例えば、

$start = $AccountingHours[$today]['start'];

将来、あなたが試みているようなことを可能にする可変変数を発見するかもしれませんが、それらを避けることを強くお勧めします。それらの実用的なアプリケーションは 1 つではないと思います。混乱とエラー () を引き起こすだけです。

于 2013-05-22T02:40:44.973 に答える
1

変数変数名を使用する必要がある場合 (実際には多次元配列を使用する必要があります)、次のような方法を試してください。

$start = ${$today.'AccountingHours'}['start'];
于 2013-05-22T02:42:30.043 に答える
0

配列要素は、次のように変数で参照できます。

$myArray[$myVar]

配列には、次のように他の配列を含めることもできます。

$myArray = array();
$myArray['a'] = array();
$myArray['a']['b'] = 'foo';
print $myArray['a']['b'];  // prints 'foo'

したがって、2 つの概念を組み合わせると、変数によって参照される多次元配列を作成できます。

$accountingHours = array();
$accountingHours['Sunday'] = array('start' => ..., 'end' => ...);
// ...
$start = $accountingHours[$today]['start'];
于 2013-05-22T02:42:06.603 に答える