1

ファイルが異なるグループ/アレイに分類されたマルチアレイという考えがあります。内部のファイルを確認する最も簡単でクリーンな方法だと思いますか?また、ナビゲーション タブ 1、2、または 3 でナビゲーション状態をアクティブに設定する必要がありますか?

私はこの配列を持っています。

Array
(
[home] => Array
    (
        [0] => index.php
        [1] => something.php
    )

[tour] => Array
    (
        [0] => tour.php
    )

[tutorials] => Array
    (
        [0] => tutorials.php
    )
)

アイデアは、ホーム ナビゲーション ボタンをクリックすると、index.php に移動し、アクティブな状態が必要なのがホーム ボタンか、ツアー ボタンかを関数がチェックすることです。この場合はホームボタンです。

[home] => Array
    (
        [0] => index.php

この機能を作りました

function findNavigationActive($tap, $filename) {
    if(in_array($filename, $topNavigationPages[$tap])) {
    return 1;
}
return 0;
}

index.php ($filename) が Home ($tap) 配列または navi-tap にあるかどうかを確認してから、1 を返す必要があります。残念ながら、このエラーが発生します。

警告: in_array() は、パラメーター 2 が配列であることを想定しています。null は、21 行目の /project/../../topNavigationHandler.php で指定されています

私は何を間違っていますか?

修繕

グローバル $topNavigationPages を使用。関数の外側で $topNavigationPages の値 (配列) を設定し、再び関数内でグローバル $topNavigationPages を使用して配列を内部にプルしました。ありがとう @tombs !

4

1 に答える 1

0

このエラーは、2 番目のパラメーターが配列ではないことを意味するため、次のようなことを試すことができます。

if (is_array($topNavigationPages[$tap])) {
    if(in_array($filename, $topNavigationPages[$tap])) {
        return 1;
    }
}
return 0;

これは、厳密な and 演算子を使用して if ループをネストせずに行うことができます。

お役に立てれば

注: スコープの問題を解決するには、グローバル値または定数のいずれかを使用できます。定数を使用するには、「定義」関数を使用します。グローバルの場合、ファイルの先頭と、それを使用する後続のすべての関数で変数を宣言します。定数を使用することを強くお勧めします。

于 2013-11-13T23:15:27.160 に答える