LoginSignup
4
3

More than 5 years have passed since last update.

[PHP]初心者がハマった、関数を使って結果を変数に代入する2パターン

Last updated at Posted at 2016-07-21

まずダメなパターン


$message = array();

function hoge($str, $key){
    if(empty($str)){
        $message[$key] = '空です';
    }
}

hoge($message, 'hogehoge');
echo $message['hogehoge'];

結果:Notice: Undefined index: hogehoge
$message['hogehoge']なんて宣言してないじゃん!と怒られる

パターン1:global変数をちゃんと使って、関数の外の変数と関数内の変数を共有する


$message = array();

function hoge($str, $key){
    if(empty($str)){
        global $message;
        $message[$key] = '空です';
    }
}

hoge($message, 'hogehoge');
echo $message['hogehoge'];

結果: 空です
これで成功!

パターン2:関数の外で連想配列を作っておいて、関数がreturnした値を代入する

$message = array();

function hoge($str){
    if(empty($str)){
        return '空です';
    }
}

$message['hogehoge'] = hoge($message);
echo $message['hogehoge'];

結果: 空です
こうやるのもあり。

以上、グローバル変数を知っていても使いこなせていなかった私のハマったところでした。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3