Bagaimana Cara Mengatasi Error "count(): must be of type Countable|array" di PHP?

Dibuat
·
Dilihat37 kali
0

Saya punya array $parents kemudian saya looping untuk mencetak teks dinamis $parent['name'] dan count($parent['children']) untuk menghitung jumlah anak yang dimiliki setiap orang tua.

Elemen pertama berhasil, tapi eror ketika memproses elemen kedua (must be of type Countable|array), ini kode lengkapnya:

$parents = [
  [
    'name' => 'sumarni',
    'age' => 28,
    'children' => [
      ['name' => 'andi', 'age' => 2],
      ['name' => 'bunga', 'age' => 3],
    ]
  ],
  [
    'name' => 'rini',
    'age' => 36,
    'children' => null
  ],
  [
    'name' => 'rara',
    'age' => 36,
    'children' => [
      ['name' => 'rini', 'age' => 10],
      ['name' => 'yoga', 'age' => 5],
    ]
  ],
];

foreach ($parents as $parent) {
  echo "Ibu " . $parent['name'] . " memiliki " . count($parent['children']) . " orang anak";
}

// output:
// Ibu sumarni memiliki 2 orang anak
// Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /main.php:28
1 Jawaban
0

Ini error karena children dari rini bernilai null, sementara fungsi count hanya bisa digunakan untuk tipe data yang mengimplementasikan interface Countable, array misalnya, null tidak.

Solusinya, alih-alih menggunakan null gunakan array kosong []:

$children = [];
echo "Ibu X memiliki " . count($children) . " orang anak";
// Ibu X memiliki 0 orang anak

Atau konversi ke array:

$children = null;
echo "Ibu X memiliki " . count((array)$children) . " orang anak";
// Ibu X memiliki 0 orang anak

Atau, cek dulu pakai is_countable():

$children = null;
echo "Ibu X memiliki " . (is_countable($children) ? count($children) : 0) . " orang anak";
// Ibu X memiliki 0 orang anak
Dibuat

Kamu tau jawabannya?

Ayo bergabung bersama lebih dari 200.000 pengguna lainnya!