«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/09/28 03:05:33  №1271250 1
>>1264400

> $arr1=explode('',$text);
Это неразбивает текст на буквы, а разбивает на байты. То есть, в случае кириллицы, на половинки букв.

Замену пробелов проще сделать через str_replace или strtr и без цикла.

> if ($arr1[$i]!=$arr2[$j]){
Та же проблема, ты берешь не буквы, а байты. Прочитай урок https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

> echo "" . $result;
Тут "" не нужно.

В общем, сейчас программа не работает нормально, так как сравнвает байты, а не буквы. Надо это исправить.

>>1264380

> Задачка про банкомат - https://ideone.com/SfcMLz

> $bills = array_reverse($bills);
Сортровать по убыванию лучше функцией вроде krsort, смотри мануал http://php.net/manual/ru/array.sorting.php

Функция array_reverse перепроставляет значения ключей (меняет их на 0, 1, 2 ...) и номиналы теряются. Это описано в мануале.

> if($amount >= $nominal and $countBanknote < $value) {
Ты берешь банкноты только если их достаточно. Но можно брать и если их не хватает. Например, сумма 3100, в наличии 5 банкнот по 500 и 7 банкнот по 100. Берем 5x500 + 6x100. Твоя же программа в этом случае не сможет набрать нужную сумму.

Надо исправить эту проблему. У тебя программа вообще пока нерабочая.