Fix php -advarsel: Størrelse af (): Parameter skal være en matrix eller et objekt, der implementerer tælles
Fix php -advarsel: Størrelse af (): Parameter skal være en matrix eller et objekt, der implementerer tælles
En PHP -fejl, der vises i mange WordPress Plugins som ikke er blevet opdateret i lang tid eller er uforenelige med nyere versioner af PHP. Php -advarsel: størrelse af (): Parameter skal være en matrix eller et objekt, der implementerer tælle.
tilfreds
I vores scenarie optrådte PHP -fejlen ved et modul Cross Sell Product Display For WooCommerce.
FastCGI sent in stderr: "PHP message: PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable in /web/path/public_html/wp-content/plugins/cross-sell-product-display-for-woocommerce/templates.php on line 18
De ce APARE EROAREA PHP ADVARSEL: STØRRELSEOF (): Parameter skal være en matrix eller et objekt, der implementerer tælles?
Problemet, der genererer denne PHP -fejl, er funktionen sizeof() som i versionen af PHP 7.2 eller efterfølgende versioner, kan generere denne fejl, hvis den givne parameter ikke er en array eller et objekt, der implementerer grænsefladen Countable.
Derfor vises fejlen ofte efter en opdatering af PHP -versionen.
Hvordan løser du PHP -fejl genereret af sizeof()?
Den enkleste metode er at erstatte opkaldet til funktionen sizeof() med et opkald til funktionen count().
I tilfælde af dem, der bruger de gamle versioner af modulet Cross Sell Product Display, løsningen er enkel. Funktionerne fra linje 18 erstattes templates.php.
function cdxfreewoocross_get_cross_sell_products($product_id=false){
if($product_id ===false ){
if(!is_product()){return false;}
$product_id = (int)get_the_ID();
if($product_id=='0'){return false;}
}
$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
if ( sizeof($crosssells ) == 0 || $crosssells =='') { return false; }
return $crosssells;
}
Ovenstående kode, hvor størrelse af () vil blive erstattet med:
function cdxfreewoocross_get_cross_sell_products($product_id=false){
if($product_id ===false ){
if(!is_product()){return false;}
$product_id = (int)get_the_ID();
if($product_id=='0'){return false;}
}
$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
if ( !is_array( $crosssells ) || count( $crosssells ) == 0 || $crosssells =='') { return false; }
return $crosssells;
}
Denne ændring kontrollerer først, om $crosssells Det er en array ved hjælp af funktionen is_array() og ellers vender tilbage false.
- [Fix PHP 7.2 / PHP 7.3] PHP -advarsel: Brug af udefineret konstant (dette vil kaste en fejl i en fremtidig version af PHP)
- Sådan rengøres enorme WP_OPTIONS i SQL - Transienter, WPSEO_SITEMAP _CACHE_VALIDATOR
- Fix wc-ajax = get_refreshed_fragments High CPU-brug (Deaktiver AJAX-vognfragmenter)
- Sådan tilpasser man siden "Ingen produkter blev fundet matchende dit valg" i WooCommerce - Optimering af salg i online butikker
- Sådan rengøres enorme WP_OPTIONS i SQL - Transienter, WPSEO_SITEMAP _CACHE_VALIDATOR
Hvis $crosssells Det er en array, funktionen bruges count() at bestemme antallet af varer i array. Hvis antallet af varer er nul eller $crosssells Det er en vakuumstreng, den returnerer falsk.
Efterlad kommentarer, hvis der skal foretages afklaringer eller færdiggørelser til denne tutorial.
Fix php -advarsel: Størrelse af (): Parameter skal være en matrix eller et objekt, der implementerer tælles
Hvad er nyt
Om Stealth
Passioneret omkring teknologi, skriver jeg med glæde på StealthSettings.com siden 2006. Jeg har stor erfaring med operativsystemer: macOS, Windows og Linux, samt med programmeringssprog og bloggingplatforme (WordPress) og til webshops (WooCommerce, Magento, PrestaShop).
Se alle indlæg af StealthDu kan også være interesseret i...