⊗ppSpOtAC 83 of 83 menu

Optimalizace převodu na pole v PHP

Není vždy nutné rozdělit řetězec na pole, abychom s ním něco udělali.

Podívejme se na příklad. V následujícím příkladu autor kódu kontroluje, zda řetězec obsahuje číslici 3:

<?php $str = '12345'; $arr = explode('', $str); // rozdělíme na pole if (in_array(3, $arr)) { echo 'ano'; } else { echo 'ne'; } ?>

Autor je šikovný - používá vestavěné funkce PHP, místo toho, aby psal vlastní provizorní řešení.

Ale kód stále není optimální: zde není potřeba rozdělovat řetězec na pole, protože existuje hotová funkce strpos, která provádí vyhledávání v řetězci:

<?php $str = '12345'; if (strpos(str, 3) !== false) { echo 'ano'; } else { echo 'ne'; } ?>

Proč je zde špatné rozdělení na pole? Protože za prvé, na rozdělení na pole se spotřebovávají prostředky procesoru, za druhé, výsledné pole bude zabírat místo v operační paměti (a to bude více, než místo, které zabírá samotný řetězec).

Poučení: nerozdělujte řetězec na pole, pokud existuje způsob, jak se tomu vyhnout.

V následujícím kódu nějaký programátor obrací znaky řetězce v opačném pořadí. Optimalizujte řešení tohoto programátora:

<?php $str = '123345'; $rev = implode('', array_reverse(explode('', $str))); echo $rev; // vypíše '54321' ?>

V následujícím kódu někdo hledá počet slov v textu. Optimalizujte řešení tohoto programátora:

<?php $str = 'aaa bbb ccc'; // nějaký dlouhý řetězec echo count(explode(' ', $str)); ?>
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout