logo
11.12.2019 09:01
1
Zdravím,
mám tu problém s jednou aplikací.
Hlásí mi to tuto chybu

Warning: count(): Parameter must be an array or an object that implements Countable in
/www/query-ads.php on line 89

na line 89 je toto:
if (count($keywords) != 0) { $query->containedIn($ADS_KEYWORDS, $keywords); }

Dokázal by mi někdo poradit?

Co se právě děje na Webtrhu?

11.12.2019 09:05
2
V proměnné keywords není pole nebo objekt, píše ti to. Bude tam něco jiného než očekává
11.12.2019 10:19
3
Dej var_dump() na ty proměnný před podmínkou a zjisti obsah.
11.12.2019 10:20
4
BC break od php 7.2.0 - count musi obsahovat coutable premennu..


pridaj pred tu podmienku dalsiu na overenie, aky typ premennej $keywords je..

Kód:
if ( ( is_array($keywords) ) and ( count($keywords) != 0 ) ) { }
resp. is_countable() ak pouzivas PHP >= 7.3
11.12.2019 10:37
5
!empty($keywords) ti zachyti null.
11.12.2019 10:43
6
ale nechyti true, int okrem 0, neprazdny string....

ak si nie je isty, ci sa vobec $keywords inicializuje tak este isset()

ideal:

if ( ( isset($keywords) ) and ( is_array($keywords) ) and ( count($keywords) != 0 ) ) { }
11.12.2019 11:27
7
ale nechyti true, int okrem 0, neprazdny string....
tak to je jasne, ale ratam ze ta premenna ma dopredu urcitelny typ a nie neobmedzeny pocet typov. riesit is_array, count a podobne... jasne, ak clovek nevie co mu pride, ale znovu pochybujem ze ten input je az tak dynamicky. to by potom asi akykolvek dynamicky jazyk musel robit tristo kontrol na kazdu jednu premennu...takze sa vratme do praktickej reality trosku :)
11.12.2019 12:00
8
no kedze nevidim jeho kod v ktorom hadze tento warning, tak neviem, ci a vobec premenna predtym existuje, neviem typ, neviem nic.. cize radsej s nicim neratam a pochybujem.. viem len to, ze premenna by mala byt countable, to je vsetko co viem..

preto isset, is_array (is_countable) ako neprestrelna prakticka oprava dotazovaneho problemu :) ..
13.12.2019 13:46
9
To vypadá na chybu způsobenou přechodem na novou verzi PHP. Jestli neumíš programovat tak zkus přejít na verzi cca 5.2.
13.12.2019 17:55
10
count() berie bez chyby skalarne hodnoty do verzie 7.1.x (ale pri nich vrati tusim 1, cize v skutocnosti nic nepocita ak to neni countable)