1

この PHP IF ステートメントは常に「false」になり、その理由がわかりません。どんな助けでも大歓迎です。

$i は 0 として渡され、$j は 4 として渡されます (これらの数値は POST で確認されました)。

$i = $_POST['entry'];
$j = $_POST['j'];

function tabs() {
  if ($i < $j)
    echo 'i is less than j';
  else
    echo 'false';
};
4

1 に答える 1

6

$iとの目に見える範囲$jではありません:tabs()

…[W]ユーザー定義関数では、ローカル関数スコープが導入されています。関数内で使用される変数は、デフォルトでローカル関数スコープに制限されています。

それらをパラメーターとして渡すか、グローバルにします(最初の方法が推奨されます)。

パラメーター

$i = $_POST['entry'];
$j = $_POST['j'];

function tabs($i, $j) {
  if ($i < $j)
    echo 'i is less than j';
  else
    echo 'false';
};

tabs($i, $j);

グローバル

$i = $_POST['entry'];
$j = $_POST['j'];

function tabs() {
  global $i, $j;
  if ($i < $j)
    echo 'i is less than j';
  else
    echo 'false';
};

tabs();

編集
または、関数内からスーパーグローバル$_POST配列にtabs()直接アクセスすることも、それぞれ、$_GLOBALS['i']およびにアクセスすることもできます$_GLOBALS['j']

于 2012-05-01T05:30:11.063 に答える