Массив табдил дар PHP
Ҳамеша зарур нест, ки сатрро ба массив тақсим кард, то чизе бо он карда шавад.
Биёед ба мисол нигарем.
Дар мисоли оянда муаллифи код тафтиш мекунад,
ки оё дар сатр рақами 3 мавҷуд аст ё не:
<?php
$str = '12345';
$arr = explode('', $str); // ба массив тақсим мекунем
if (in_array(3, $arr)) {
echo 'мавҷуд аст';
} else {
echo 'мавҷуд нест';
}
?>
Муаллиф хуб кор кардааст - вазъан ба функцияҳои дохилии PHP истифода мебарад, ба ҷои он ки худ корҳои бефоида нависад.
Аммо код ҳанӯз ҳам оптималӣ нест: дар инҷо ҳеҷ эҳтиёҷе ба
тақсим кардани сатр ба массив нест, зеро функсияи тайёр
strpos мавҷуд аст, ки ҷустуҷӯро дар сатр иҷро мекунад:
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'мавҷуд аст';
} else {
echo 'мавҷуд нест';
}
?>
Чаро дар инҷо тақсим кардан ба массив бад аст? Зеро ки, аввалан, барои тақсим кардан ба массив захираҳои процессор сарф мешаванд, дуввуман, массиви ба даст овардашуда ҷой дар хотираи оперативӣ ишғол мекунад (ва ин ҷой аз он ҷое, ки худи сатр ишғол мекунад, бештар хоҳад буд).
Маъно: сатрро ба массив тақсим накунед, агар роҳе барои ин кардан набошад.
Дар коди оянда як барноманависи номаълум рамзҳои сатрро ба тартиби баръакс мегардонад. Ҳалли ин барноманависро оптималӣ созед:
<?php
$str = '12345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // '54321'-ро бароварда хоҳад дод
?>
Дар коди оянда як шахс меҷӯяд, ки миқдори калимаҳо дар матн чандто аст. Ҳалли ин барноманависро оптималӣ созед:
<?php
$str = 'aaa bbb ccc'; // як сатр тӯлонӣ
echo count(explode(' ', $str));
?>