⚠️
【エラー記録】count()のエラー
こんにちは、テリスです
countのエラーが出たので解決方法をメモしておきます。
今回のエラーはこちらです!
count():Parameter must be an array or an object that implements Countablein【ファイル】on line 14
・・・
function validate($a)
{
$errors = [];
if (!strlen($a['name'])) {
$errors = '名前を入力してください';
}
if (!strlen($a['住所'])) {
$errors = '住所を入力してください';
}
}
$errors = validate($a);
if (!count($errors)) {
$link = dbConnect();
createReview($link, $a);
mysqli_close($link);
header("Location: example.php");
}
・・・
上記のようなコードを書いたところ
count():Parameter must be an array or an object that implements Countable
このエラーが出ました。
エラーの内容を見てみると(英語苦手なので翻訳が間違っていたらすいません🙇)、
エラー: count()は引数は配列か数えられるオブジェクトにしなければならない
とあります。
14行目にエラーが出ているみたいなので確認すると、
!count($errors)
if文の中身がこのようになっていて、おそらく$errorsが原因かと考えられます。
そこで、少し戻ると
$errors = validate($a);
とあるためvalidate($a)が配列かオブジェクトになっていない可能性があります。
validate関数の中身を確認すると、6行目と9行目が$errorsに代入していることがわかります。
$errorsに代入しても配列にはならないため、下記のように訂正しました。
・・・
function validate($a)
{
$errors = [];
if (!strlen($a['name'])) {
$errors['name'] = '名前を入力してください';
}
if (!strlen($a['address'])) {
$errors['address'] = '住所を入力してください';
}
}
$errors = validate($a);
if (!count($errors)) {
$link = dbConnect();
createReview($link, $a);
mysqli_close($link);
header("Location: example.php");
}
・・・
これでバリデーション処理をすることができました。
Discussion