• array_shi
    ft($result)で先頭の値を取り出してますがな...
  • guest 
    array_shift($result)で先頭の値を取り出してますがなぜarray_shiftが必要なのかわかりません。試しにarray_shiftなしの($result)のみで判定してもエラーメッセージは出ました。クエリ結果は配列形式で入ってるのでarray_shiftで先頭だけ取り出して判定するというのもわかりません。var_dump($result)で画面に表示させたところarray(1) { ["count(*)"]=> string(1) "1" }と出たためキーは一つしかありません。なのに何故わざわざ先頭の値を取り出す必要があるのでしょうか。
    回答 1

    guest 
    すみません、↑の質問は無視されて大丈夫です。array_shiftをつけると重複されてない場合マイページへ遷移しますが、付けずに($result)で判定すると重複してなくてもそのEmailは既に登録されていますと表示されるのは何故でしょうか。var_dumpで画面に表示させるとarray(1) { ["count(*)"]=> string(1) "0" }で0なのにデータベースに情報は入りません。

    ウェブカツコーチ 
    講師からの回答
    if(!empty($result)){
    $err_msg['email'] = MSG08;
    }
    のような処理を行ったという前提での回答になりますが、$resultが!empty(空ではない)と判断されたからです。
    ご自身でvar_dumpで出している通り、$resultの中身は「array(1) { ["count(*)"]=> string(1) "0" }」であり、「"0"という文字列を持った"配列"」です。PHPはこの配列を「emptyではない」と判断しているのです。

    var_dump(array_shift($result));
    exit;

    のようにすると、元々の処理であるarray_shift($result)の処理結果を見ることができます。
    各処理の違いを確認してみてください。なお、下記参考の通りPHPは「文字列の0」はemptyと判断します。


    参考:
    https://www.go-next.co.jp/blog/web/php/12059/#empty

    公式ドキュメントは小難しいですが、少しずつ慣れていきましょう
    https://www.php.net/manual/ja/function.empty.php