PHP学習中の者です。 PHPの【Notice: Undefined index】について質問させてください。 フォームからPOSTで受け取った値の入力値チェック(+文字列化)を関数にして処理を試みたところ、Notice: Undefined indexが表示されて困っています。意味を調べたところ変数が未定義ということなんですが、ベタ書きだと上記のエラーは出ないのになぜ関数にするとエラーになってしまうんでしょうか。 発生条件はcheckboxをひとつも選択しない状態でPOSTしたときに起こります。 ----- INPUT ----- <li><input class ="" name="cb[]" type="checkbox" id="cb-1" value=1><label class="" for="cb-1">aaa</label></li> <li><input class ="" name="cb[]" type="checkbox" id="cb-2" value=2><label class="" for="cb-2">bbb</label></li> <li><input class ="" name="cb[]" type="checkbox" id="cb-3" value=3><label class="" for="cb-3">ccc</label></li> ----- POST受け取り側(ベタ書き) ----- if(isset($_POST['cb']) && is_array($_POST['cb']) && num_array($_POST['cb'])) { $cb = implode(',', $_POST['cb']); }else{ $cb = ""; } ↑これは受け取れますが、これを↓のように関数にして、呼び出すとcheckbox未選択の場合Notice: Undefined indexが出ます。(※num_array・・・配列の中身が数値か調べる自作関数。こちらは問題なさそうです。) ----- 自作関数(別ファイル) ----- function check_array($post_arr){ if(isset($post_arr) && is_array($post_arr) && num_array($post_arr)) { return $post_arr = implode(',', $post_arr); } else{ return $post_arr = ""; } } ----- POST受け取り側(呼び出し) ----- $cb = check_array($_POST['cb']); テストの配列↓を作って呼び出しても問題なく動いてるようなんですが、POSTだとなぜかダメなようで。。。 $test1 = array(1,2,'A',4,5,6,7,8); var_dump(check_array($test1)); // string(0) "" $test2 = array(1,2,3,4,5,6,7,8); var_dump(check_array($test2)); // string(15) "1,2,3,4,5,6,7,8" $test3 = null; var_dump(check_array($test3)); // string(0) "" 配列の受け取りが無数にあり、何度も書くのが面倒なので出来れば関数にしたいところなんですが、解決策はあるのでしょうか?教えていただきたく存じます。
PHP