まずダメなパターン
$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'];
結果: 空です
こうやるのもあり。
以上、グローバル変数を知っていても使いこなせていなかった私のハマったところでした。