0

配列を作成するconfig.phpファイルがあります。

$config = array(
       'foo' => 'bar'
);
function foo()
{
       echo 'good';
}

config.phpに依存するものを出力する別のutility.phpファイルもあります

require_once(-the absolute path to config.php-);
class Utility{
  function bar()
  {
    echo count($config);
    echo foo();
  }
}

index.phpスクリプトがutility.phpだけでなくconfig.phpにも依存している状況にあります。したがって、foo.phpを含めると、config.phpを再度含めます。何かのようなもの

require_once(-the absolute path to config.php-);
require_once(-the absolute path to utility.php-);
echo count($config);
utility::bar();

この関数は出力します

1good

ただし、Utility :: barを呼び出そうとすると、count($ config)に対して0が出力されます。count($ config)がindex.phpに1を返しても、$config配列がutility.phpに作成されることはありません。興味深いことに、utility.phpで関数foo()を呼び出すと、「good」が返されます。$ configをグローバルにしても何も変わりませんでした(そして私は悪いスタイルだと聞きました)。

4

1 に答える 1

1

可変スコープの問題があるようです。PHP変数スコープについて読んでください。例として、あなたが変わったら

echo count($config);

global $config;
echo count($config);

それはうまくいくでしょう。

于 2012-06-19T00:23:46.787 に答える