2

ファイルをインクルードしようとしていますが、機能していないようです-コード全体は次のとおりです。

if (file_exists('config/categories.php')) {
    include ('config/categories.php'); 
} 

foreach ($categories as $cat_sef => $cat_name) {
    echo '<a href="'.$full_domain.$cat_sef.'" alt="#">'.$cat_name.'</a><br />';
}

config/categories.php の内容は単純な配列です:

$categories = array("category-1" => "Category 1", 
"category-2" => "Category 2", 
"category-3" => "Category 3")

以下が機能するため、ファイルが存在することはわかっています。

if (file_exists('config/categories.php')) {
    echo "file exists";
}

ただし、categories.php の配列を次のように置き換えると:

echo "testing";

どちらも何も表示されません。私が見る限り、ファイルは存在しますが、何らかの方法で含まれているようには見えません。カテゴリ ファイルの名前を別の名前に変更すると、「そのようなファイルはありません」というエラーが表示されます (ファイルが存在しません)。

元のコード スニペットでは、次のエラーが表示されます。

Notice: Undefined variable: categories

しかし、ご覧のとおり、categories.php ファイルで定義されています。

それが機能する唯一の方法は、コードの if (file_exists) 部分の代わりに配列を配置することです。他の部分はそのcategories.phpファイルに依存しているため、私はやりたくありません。複数のファイルの配列。

誰かがこれが何であるか考えていますか? さらに情報が必要な場合はお知らせください。

4

5 に答える 5

5

ここには 2 つのオプションがあります。

  • include(dirname(__FILE__).'/config/categories.php')別の「config/categories.php」ではなく、この同じファイルを含めていることを確認するために使用します

  • もう一度、categories.php にこのような開始 php タグが含まれていることを確認してください<?php。当たり前のように思えますが、私はこれをコードレビューで何度も見てきました。

お役に立てれば !

于 2012-05-23T08:01:51.557 に答える
2

$categories をif演算子のスコープ内に含めただけなので、外部で $categories を使用することはできません。含める前に $categories を導入するだけです

$categories = null;
if (file_exists('config/categories.php')) {
    include ('config/categories.php'); 
} 

foreach ($categories as $cat_sef => $cat_name) {
    echo '<a href="'.$full_domain.$cat_sef.'" alt="#">'.$cat_name.'</a><br />';
}
于 2012-05-23T08:07:37.943 に答える
2

file_exists同じ方法でファイルを検索しincludeないでください。オプションを使用してinclude_path、別のディレクトリでファイルを検索します。

ファイルを含めることができるかどうかを本当に知りたい場合は、絶対パスを使用する必要があります。

別物。foreach ($categoriesコードが関数内にある場合は、変数$categoriesをグローバルとして定義する必要があります。include常にグローバルなコンテキストで行われるためです。

于 2012-05-23T08:15:26.287 に答える
0

include_once以前にこのファイルをすでにインクルードしている場合に使用します。

于 2012-05-23T08:13:45.633 に答える