«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2017/04/17 20:02:35  №975191 1
14920989386350.jpg (45, 538x348)
348x538
подскажите, пожалуста. попробовал решить задачку с калькулятором. вот код http://ideone.com/6hUFWJ
1. на идеуан выдает ошибку
Uncaught Error: Call to undefined function mb_strlen() in /home/8DynTa/prog.php:14
2. через терминал все работает на ноуте, но только конкатенирует строки, а не складывает их, не могу понять где ошибка
3. пошпыняйте за сам код
Ответы: >>975196 >>976099 >>976106
Аноним 2017/04/17 20:13:07  №975196 2
>>975191
на ideone может не быть расширения mbstring
Ответы: >>975340 >>976099
Аноним 2017/04/17 23:28:40  №975340 3
>>975196
понятно, тоже так подумал, жаль вот ошибку я еще не нашел
Аноним 2017/04/19 01:22:49  №976099 4
>>975666

В CSS есть псевдокласс :empty - https://developer.mozilla.org/ru/docs/Web/CSS/:empty - может можно его задействовать.

Только наверно HTML придется переделать, например добавлять префикс n: через псевдоэлемент ::before.

>>975668

В твоем случае проще всего написать функцию, которая получает на вход массив с данными и выдает на выходе либо кусок SQL кода с экранированными данными через $pdo->quote(), либо кусок SQL кода с плейсхолдерами и массив значений плейсхолдеров.

Попробуй посмотреть как в Doctrine DBAL сделано:

док-я: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html#insert
код: https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Connection.php#L680

Важно написать код так, чтобы SQL-инъекция (подмена запроса) была невозможна, чтобы при любых входных данных вид запроса соответствовал задуманному.

А в общем, для построения произвольных запросов из кусков есть паттерн Query Builder: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html

>>975591

Может какое-нибудь кеширование не включено?

>>975525

Тесты с вопросами на знание той или иной технологии.

>>975278

Как ты собрался писать на PHP без знания PHP?

>>975196

Я им писал пару месяцев назад, недавно ответили, что проверят, в чем проблема.

>>975191

mb-функций нет на ideone, есть на 3v4l.org
Ответы: >>976183 >>977933
Аноним 2017/04/19 10:12:49  №976183 5
>>976099
> кеширование не включено?
Включено, включено. Я же понимаю все. Но вообще он реально тяжелый, та же юи в 3 раза быстрее летает (а у юйки весьма средняя скорость по больнице я бы сказал). Люмен пашет шустрее юи уже, но это ж не сам ларавел. Под скоростью, конечно, имеется ввиду не только скорость обработки запроса, но и потребляемые ресурсы. И конечно все это будет не критично, если нет проблем с расширением серваков, но я как-то такой подход не одобряю. Да и не осуждаю сам ларавел, нишевая тема, удобная в некоторых местах, востребованная сейчас (юи только на легаси уже, нового почти ничего нет) просто вот не взял бы я его на свой проект, на мой взгляд есть масса решений гораздо лучше и эффективнее.
Аноним 2017/04/22 19:17:22  №977933 6
лиля.jpeg (6, 236x213)
213x236
>>976099
>>mb-функций нет на ideone, есть на 3v4l.org

не понимаю и туда запилил Лиличку https://3v4l.org/h3E9h, тоже только знаки вопроса вылазят. Допоможить!
Ответы: >>977935
Аноним 2017/04/22 19:19:28  №977935 7
>>977933

https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

ты почему-то решил что $string[0] вернет первую букву строки. Но это не так, $string[0] это только первый байт из строки, а буква состоит из нескольких байт и при попытке его отобразить получается вопросик.

Используй mb_substr.
Ответы: >>977980 >>977989
Аноним 2017/04/22 20:38:56  №977980 8
>>977935
спасибо, понял промах
Аноним 2017/04/22 21:08:32  №977989 9
Ответы: >>979511
Аноним 2017/04/25 02:19:20  №979511 10
>>977989

> $biggest=mb_strlen(max($text_arr));
Неправильно. max() выстраивает строки по возрастанию байт, которыми они кодируются, и берет ту, в которой первый байт максимален. Соответственно для строк: ['abram', 'z'], max() вернет 'z' потому что в utf-8 код для 'z' больше чем для 'a'.

Если интересно, вот правильное сравнение строк по алфавиту, но тут оно не нужно: https://github.com/codedokode/pasta/blob/master/php/collation.md

> $text_arr
Плохое название, не надо в переменной писать ее тип, и не надо использовать подчеркивание. Правильнее назвать $lines (строки).

В остальном верно.

>>977748

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

"рекуррентная" - значит что это последовательность, где следующий член последовательности выражается через предыдущий (или предыдущие). https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0

Ну например рекуррентная формула для последовательности натуральных чисел 1, 2, 3...:

x[1] = 1; // последовательность начинается с единицы
x[n] = x[n - 1] + 1; // следующий член на 1 больше предыдущего

В программе у тебя есть проблема: слишком большие блоки в if и к тому же они еще и сильно вложены. Лучше сделать так:

if ($total_sum < $amount){
echo "Выдача невозможна: недостаточно средств в терминале\n";
exit();
}

....

> $quantity_5000=
> $quantity_1000=
> $quantity_500
Это копипаста, так не пойдет, надо обойтись без нее. Нельзя просто бездумно копировать код, надо подумать, как избавиться от повторов. Хотелось бы чтобы номиналы купюр задавались в массиве в начале программы и их можно было бы менять, не трогая код. А то если у нас будет 10 номиналов купюр, ты 10 блоков кода что ли будешь копипастить?