Saya memiliki objek stdClass yang dibuat dari json_decode yang tidak akan mengembalikan angka yang benar ketika saya menjalankan fungsi count ($ obj). Objek memiliki 30 properti, tetapi pengembalian fungsi count () katakanlah 1.
Ada ide?
Di bawah ini adalah contoh salah satu objek. (Saya meminta informasi tren harian dari Twitter). Jika objek ini memiliki lebih dari satu properti, count ($ obj) akan sama dengan 1.
[trends] => stdClass Object
(
[2009-08-21 11:05] => Array
(
[0] => stdClass Object
(
[query] => "Follow Friday"
[name] => Follow Friday
)
[1] => stdClass Object
(
[query] => "Inglourious Basterds" OR "Inglorious Basterds"
[name] => Inglourious Basterds
)
[2] => stdClass Object
(
[query] => Inglourious
[name] => Inglourious
)
[3] => stdClass Object
(
[query] => #songsincode
[name] => #songsincode
)
[4] => stdClass Object
(
[query] => #shoutout
[name] => #shoutout
)
[5] => stdClass Object
(
[query] => "District 9"
[name] => District 9
)
[6] => stdClass Object
(
[query] => #howmanypeople
[name] => #howmanypeople
)
[7] => stdClass Object
(
[query] => Ashes OR #ashes
[name] => Ashes
)
[8] => stdClass Object
(
[query] => #youtubefail
[name] => #youtubefail
)
[9] => stdClass Object
(
[query] => TGIF
[name] => TGIF
)
[10] => stdClass Object
(
[query] => #wish09
[name] => #wish09
)
[11] => stdClass Object
(
[query] => #watch
[name] => #watch
)
[12] => stdClass Object
(
[query] => Avatar
[name] => Avatar
)
[13] => stdClass Object
(
[query] => Ramadhan
[name] => Ramadhan
)
[14] => stdClass Object
(
[query] => Goodnight
[name] => Goodnight
)
[15] => stdClass Object
(
[query] => iPhone
[name] => iPhone
)
[16] => stdClass Object
(
[query] => #iranelection
[name] => #iranelection
)
[17] => stdClass Object
(
[query] => Apple
[name] => Apple
)
[18] => stdClass Object
(
[query] => "Usain Bolt"
[name] => Usain Bolt
)
[19] => stdClass Object
(
[query] => H1N1
[name] => H1N1
)
)
)
2009-08-21 11:05
, berupa array dengan 20 entri, jadi count ($ tren) berhak mengembalikan 1.Jawaban:
Masalahnya adalah bahwa hitungan dimaksudkan untuk menghitung indeks dalam larik, bukan properti pada objek, (kecuali itu adalah objek khusus yang mengimplementasikan antarmuka Countable). Cobalah mentransmisikan objek, seperti di bawah ini, sebagai array dan lihat apakah itu membantu.
Cukup mentransmisikan objek sebagai array tidak akan selalu berfungsi tetapi sebagai objek stdClass sederhana, tugas tersebut harus diselesaikan di sini.
sumber
Fungsi hitungan dimaksudkan untuk digunakan pada
StdClass bukan keduanya. Cara termudah / tercepat untuk mencapai apa yang Anda cari adalah
Ini menggunakan fungsi get_object_vars PHP , yang akan mengembalikan properti objek sebagai array. Anda kemudian dapat menggunakan array ini dengan fungsi count PHP.
sumber
get_object_vars()
hasilstdClass
casting array ke objek akan menghasilkan array kosong.stdClass
Sebaliknya, mentransmisikan instance ke array dapat berfungsi di mana saja.Objek tidak memiliki 30 properti. Ini memiliki satu, yaitu array yang memiliki 30 elemen. Anda membutuhkan jumlah elemen dalam larik itu.
sumber
Tidak ada yang salah dengan count () di sini, "tren" adalah satu-satunya kunci yang dihitung dalam kasus ini, Anda dapat mencoba melakukan:
Atau:
Atau bahkan mungkin melakukan:
sumber
Gunakan ini
variabelnya
$i
adalah jumlah kunci.sumber
Hitung arrya atau objek normal
Hitung arya atau objek multidimensi
sumber
count()
fungsi bekerja dengan array. Namun jika Anda ingin menghitung panjang benda maka Anda bisa menggunakan cara ini.sumber