Я сделал функцию, которая принимает любое количество слов для параметра и использует первую букву каждого слова.
Я посмотрел на этом сайте: http://www.carlconrad.net/en/2014/03/17/improving-php-performance/ и в нем говорится:
Избегайте конкатенации строк в циклах. При помещении в цикл конкатенация строк приводит к созданию большого количества временных объектов и ненужному использованию сборщика мусора. Оба потребляют память и могут значительно замедлить выполнение скрипта.
Я пытаюсь понять, как я могу изменить свой код ниже, чтобы он работал быстрее. Есть ли другой способ объединить строки в PHP, не полагаясь на значение оригинала?
Я знаю, что в сыром языке Си я мог бы использовать адресный указатель строки плюс смещение в определенных пределах, чтобы добавлять данные, не беспокоясь о том, что исходная строка копируется в другое место, источники утверждают, что PHP делает во время конкатенации.
В идеале я хочу, чтобы моя конкатенация строк работала так, как работает этот код C (предположим, что мы находимся в функции main ()):
char string[1000];
memcpy(string,'ABCD',4); //place ABCD at start
memcpy(string+4,'EFGH',4); //add EFGH to the string (no previous string copying required)
Просто простая конкатенация без манипулирования предыдущим значением строки.
Это мой PHP-код, который нуждается в совете по улучшению:
function capitalize($words){
$words=$words.' ';
$returnedwords='';
$eachword=explode(' ',$words);$numberofwords=count($eachword);
if ($numberofwords >=1){
$wordkey=array_keys($eachword);
for($thiswordno=0;$thiswordno<$numberofwords;$thiswordno++){
$word=$eachword[$wordkey[$thiswordno]];
$returnedwords.=' '.strtoupper(substr($word,0,1)).strtolower(substr($word,1));
}
return substr($returnedwords,1);
}
}
Любые идеи, как я могу следовать рекомендации веб-сайтов, чтобы избежать конкатенации строк в циклах, как у меня в?
В PHP есть функция, чтобы сделать первое слово строки в качестве заглавной.
пример 1: имя строки:
$str = 'this is test value of data';
echo ucwords('this is test value of data');
вывод: это тестовое значение данных
Пример 2: создать строку ucword из массива, содержащего много слов:
$str = array(
'this',
'is',
'test',
'VALUE',
'of',
'Data'
);
$str = array_map('ucwords', array_map('strtolower', $str));
echo implode(' ', $str);
вывод: это тестовое значение данных
для более подробной информации взгляните на: Строковые функции PHP
Других решений пока нет …