0

カスタマー サービス コンタクト センターが閉鎖されている場合、ウェブサイトにメッセージを表示する機能が必要です。現在の日が休日かどうかを確認するコードをクリーンアップしようとしています。

以前は、休日ごとに変数を使用し、休日ごとに if ステートメントを使用していました。これは大量のコードであり、ずさんで専門的ではないように見えました。私は多次元配列について調べてきましたが、これは実行可能な解決策のようです。


これが私の配列のサンプルです:

//Store Holidays in multidimensional array
$holidays = array
(
  "NewYearsDay"=>array
    (
      "Date"=>"01-01-2014",
      "Closed"=>"Yes"
    ),
  "MartinLutherKingJrDay"=>array
    (
      "Date"=>"01-21-2013,
      "Closed"=>"Yes"
    )
);

これにより、次のことがわかります(これは良いことです-この部分には問題はありません)

Array
(
    [NewYearsDay] => Array
        (
            [Date] => 01-01-2014
            [Closed] => Yes
        )

    [MartinLutherKingJrDay] => Array
        (
            [Date] => 01-21-2013
            [Closed] => Yes
        )

)

ただし、foreachループを使用すると、休日の名前しか取得できません。日付と閉店情報を取得したい。

foreach ($holidays as $key => $value) {
    echo $key;

私にのみ与えられます:( NewYearsDayMartinLutherKingJrDay後で対処できる間隔の問題)

最終的には次のようなことができるようになりたいです。

//loop through the array and do this for each iteration:
if ((NewYearsDay['date'] == date('d-m-Y')) && (NewYearsDay['closed'] == Yes)) {
    $status = "closed";
}
4

2 に答える 2

4

省略して、データに到達するために$key使用します。$value

foreach ($holidays as $value) {
    var_dump($value);
    if (($value['date'] == date('d-m-Y')) && ($value['closed'] == 'Yes')) {
        $status = "closed";
    }
}
于 2013-10-02T18:27:23.230 に答える
2

ディエゴペリーニが上で指摘したように、もう少し文書化されたバージョンを次に示します。

foreach ($holidays as $name => $value) {
    // $name should be there, it contains your "MartinLutherKingDay" etc, 
    // could be handy.
    // although I'd put the formatted display name into your array:
    // $value['name'] = 'Martin Luther King Day';
    list($date, $closed) = $value;

    if ($date == date('d-m-Y')) && ($closed == 'Yes')) {
        // if you find what you want, and you only want one, you can skip
        // the rest of the foreach
        $status = "closed";
        continue;
    }
}
于 2013-10-02T18:40:10.473 に答える