6

重複の可能性:
php 関数変数のスコープ

以下のコードを使用して、グローバル変数でテストしています。グローバル変数は関数内で比較できないようです。

出力に「hello world」が表示されないのはなぜですか?

以下は私が試しているコードです:

<?php    
$bool = 1;

function boo() {
    if ($bool == 1) {
        $bool = 2;
        echo 'Hello World';    
    }
}
?> 

を削除するfunction boo()と、「hello world」が表示されます。関数が存在するのに表示されないのはなぜですか?

4

4 に答える 4

7

global $var変数にアクセスするために使用します

<?php    
$bool = 1;

function boo() {
    global $bool;
    if ($bool == 1) {
        $bool = 2;
        echo 'Hello World';    
    }
}

boo();
?>

または、ポインターを使用するより安全な方法は、

function boo(&$bool) {
    if ($bool == 1) {
        $bool = 2;
        echo 'Hello World';
    }
}
于 2012-12-04T17:59:07.343 に答える
6

宿題のように見えますが、まだ:

<?php

$bool = 1;

boo();

function boo() {
global $bool;

if ($bool == 1) {
$bool = 2;
echo 'Hello World';

}


}
?> 

または

<?php

$bool = 1;

boo(&$bool);

function boo(&$bool) {

if ($bool == 1) {
$bool = 2;
echo 'Hello World';

}


}
?> 
于 2012-12-04T17:59:28.407 に答える
3

関数を呼び出し$bool、パラメーターとして渡し、値を返します。

$bool = 1;
$bool = boo($bool);

function boo($bool) {

  if ($bool == 1) {
    $bool = 2;
    echo 'Hello World';    
  }

  return $bool;
}
于 2012-12-04T17:58:38.063 に答える
0

このように使う

$bool = 1;
function boo($bool) {

  if ($bool == 1) {
    $bool = 2;
    echo 'Hello World';    
  }
}
boo($bool);
于 2012-12-04T18:00:43.307 に答える