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
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
Kamu tau jawabannya?
Ayo bergabung bersama lebih dari 200.000 pengguna lainnya!