PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 11
hehagog545 Отправлено: 29 Сентября, 2020 - 09:45:10 • Тема: Непонятки с кодировкой • Форум: Вопросы новичков

Ответов: 1
Просмотров: 322
ответ
Спойлер (Отобразить)

закрыто
hehagog545 Отправлено: 29 Сентября, 2020 - 00:07:15 • Тема: Непонятки с кодировкой • Форум: Вопросы новичков

Ответов: 1
Просмотров: 322
Всем привет!
Трабл с кодировкой, везде где только можно utf-8 посылаю.

опенсервер:
апач 2.4 (utf-8 по умолчанию)
пхп 7.4 (utf-8 по умолчанию)
Страница браузера также рапортует, что отображает в utf-8
даже .htaccess создал с AddDefaultCharset utf-8 Огорчение
сервер перезагружал, после изменений в настройках

Куда ещё можно покопать? Однако
Имеем код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header('charset=utf-8');
  4. $some = 'какао - горькое питьё';
  5. echo $some; // всё правильно выводится
  6. echo "<br/>";
  7. echo $some[0]; // а вот тут такое -> &#65533; Почему такое вылазит?
  8.  

Итог вывода в браузере:

    какао горькое питьё

Основной вопрос: почему рус текст норм выводится, а символ нет?
Растерялся
hehagog545 Отправлено: 08 Сентября, 2020 - 20:30:14 • Тема: Опять рекурсия покоя не даёт :) • Форум: Вопросы новичков

Ответов: 1
Просмотров: 319
Огорчение
hehagog545 Отправлено: 08 Сентября, 2020 - 17:41:47 • Тема: Опять рекурсия покоя не даёт :) • Форум: Вопросы новичков

Ответов: 1
Просмотров: 319
Задача:
Напишите функцию persistence, которая принимает положительный параметр num и возвращает его мультипликативное постоянство, то есть количество раз, которое вы должны умножить цифры в num, пока не дойдете до единственной цифры..

For example:
PHP:
скопировать код в буфер обмена
  1.  
  2. persistence(39) === 3; // because 3 * 9 = 27, 2 * 7 = 14, 1 * 4 = 4 and 4 has only one digit
  3. persistence(999) === 4; // because 9 * 9 * 9 = 729, 7 * 2 * 9 = 126, 1 * 2 * 6 = 12, and finally 1 * 2 = 2
  4. persistence(4) === 0; // because 4 is already a one-digit number
  5.  


Моё решение, которое не хочет выдавать что нужно:
Спойлер (Отобразить)
Цитата:

рекурсия №1|кол-во символов:3|результат: 729|||
рекурсия №2|кол-во символов:3|результат: 126|||
рекурсия №3|кол-во символов:2|результат: 12|||


Вопрос: почему на рекурсия №3 не происходит дальнейшего счёта (1 * 2 = 2)и ретурн не происходит? Спасибо
hehagog545 Отправлено: 27 Августа, 2020 - 09:29:44 • Тема: Рекурсивная функция не хочет работать :) • Форум: Вопросы новичков

Ответов: 11
Просмотров: 767
LIME ок, спасибо, я не правильно представил себе работу ретурна Растерялся

Объясните пожалуйста почему в этом примере счетчик работает:
Листинг 1
PHP:
скопировать код в буфер обмена
  1.  
  2. function sum14($quantityTry = 1)
  3. {
  4.         $res;
  5.         for ($i = 0; $i <= 3; $i++)
  6.         {
  7.                 $count += rand(0,5);
  8.         }
  9.  
  10.         if($count < 14)
  11.         {
  12.                 $quantityTry++;
  13.                 sum14($quantityTry);
  14.         }
  15.         else
  16.         {      
  17.                 // Работает счётчик
  18.                 echo $res = 'Результат ' . $count . '. За ' . $quantityTry . ' попыток';
  19.         }
  20.                
  21. }
  22.  


А в этом счётчик не работает:
Листинг 2
PHP:
скопировать код в буфер обмена
  1.  
  2. function sum14($quantityTry = 1)
  3. {
  4.         $res;
  5.         for ($i = 0; $i <= 3; $i++)
  6.         {
  7.                 $count += rand(0,5);
  8.         }
  9.  
  10.         if($count < 14)
  11.         {
  12.                 $quantityTry++;
  13.                 sum14($quantityTry);
  14.         }
  15.         else
  16.         {      
  17.                 // Не работает счётчик
  18.                 return $res = 'Результат ' . $count . '. За ' . $quantityTry . ' попыток';
  19.         }
  20.                
  21. }      
  22.                        
  23. echo sum14();
  24.  


И ещё одно недоразумение увиделось. В листинге 1 'Результат' бывает равен и 16 и 17 и 18.
Как такое может быть, если максимальное рандомное число 5 и оно суммируется не более 3ёх раз?
(5 * 3 = 15 // максимум)
hehagog545 Отправлено: 26 Августа, 2020 - 21:01:27 • Тема: Рекурсивная функция не хочет работать :) • Форум: Вопросы новичков

Ответов: 11
Просмотров: 767
LIME спасибо, значит ретурн в рекурсивных ф-циях лучше не использовать, т.к. он просто не вернётся из недр, если глубина больше 1, то произойдёт логическая ошибка - как думаешь, за правило такую мысль можно выдать или есть исключения?
Спойлер (Отобразить)
hehagog545 Отправлено: 26 Августа, 2020 - 20:33:23 • Тема: Рекурсивная функция не хочет работать :) • Форум: Вопросы новичков

Ответов: 11
Просмотров: 767
LIME, подскажи по ретурну и рекурсии.
Ретурн он сразу в начало возвращает, выходя из всех уровней рекурсии или на 1 уровень вверх возвращает, как брэйк?
И можно ли задавать, как брэйку уровень выхода?

Спасибо.

PS Всё начиналось вроде с простой задачки, но в ходе решения стали возникать теоретические вопросы в которых оказался пробел - вот и копаюсь, с вашей помощью Улыбка
hehagog545 Отправлено: 26 Августа, 2020 - 18:22:35 • Тема: Рекурсивная функция не хочет работать :) • Форум: Вопросы новичков

Ответов: 11
Просмотров: 767
LIME спасибо. Про синоним зла и глобал слышал давно Улыбка
Подправил, версия без глобал:
PHP:
скопировать код в буфер обмена
  1.  
  2. function sum14($quantityTry)
  3. {
  4.   for ($i = 0; $i <= 3; $i++) {
  5.  
  6.     if($i == 3) {
  7.                        
  8.       if($count < 14) {
  9.         $quantityTry++;
  10.         sum14($quantityTry);
  11.       } else {
  12.         echo $res = 'Результат ' . $count . '. За ' . $quantityTry . ' попыток'; // выводим
  13.       }
  14.     }
  15.   $count += rand(0,5);
  16.   }
  17. }
  18.                        
  19. $quantityTry=1;
  20. sum14($quantityTry);
  21.  


Вообще кошерные функции возвращают результат, но ф-ция начинает не работать, если ретурн юзать вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. ...
  3. } else {
  4.      return $res = 'Результат ' . $count . '. За ' . $quantityTry . ' попыток';
  5.   }
  6. ...
  7.  

Подскажите почему оно не работает в данном применении? Спасибо

UPD:
(Предположение почему не работает с ретурном как следует: верно ли думать, что ретурн при рекурсии возвращает на 1 уровень вверх, а т.к. уровней углубления в рекурсию больше, от того и происходит ошибка. Т.к. ф-ция с ретурном работает, если:
1.повезло и она сгенерила с первого раза
2.также должно работать и для 2ух раз, а вот если глубина рекурсии больше 2ух, то уже ничего не выводит.)
hehagog545 Отправлено: 26 Августа, 2020 - 12:22:38 • Тема: Рекурсивная функция не хочет работать :) • Форум: Вопросы новичков

Ответов: 11
Просмотров: 767
Vladimir Kheifets спасибо!
Спойлер (Отобразить)

Всё понял, и где был не прав и важность global.
Вот корректная версия:
PHP:
скопировать код в буфер обмена
  1.  
  2. function sum14($quantityTry)
  3. {
  4.   global $res; // 1 добавили global $res с наметкой на вывод
  5.  
  6.   for ($i = 0; $i <= 3; $i++) {
  7.  
  8.     if($i == 3) {
  9.                        
  10.       if($count < 14) {
  11.         $quantityTry++; // 2 вынесли отдельно, ибо sum14($quantityTry++); - не работает
  12.         sum14($quantityTry);
  13.       } else {
  14.         $res = 'Результат ' . $count . '. За ' . $quantityTry . ' попыток'; // убрали return
  15.       }
  16.     }
  17.   $count += rand(0,5);
  18.   }
  19. }
  20.                
  21.        
  22. $quantityTry=1;
  23. sum14($quantityTry); // ф-ция отработала и записала итог работы в global $res;
  24. echo $res; // вот его и выводим
  25.  


Всем спасибо за участие Улыбка
hehagog545 Отправлено: 25 Августа, 2020 - 23:06:56 • Тема: Рекурсивная функция не хочет работать :) • Форум: Вопросы новичков

Ответов: 11
Просмотров: 767
Привет, помогите разобраться.
Проблема: всегда выводит кол-во попыток 1 и нужно много раз f5 жать, до результата, т.е. оно не "проваливается/рекурсит" саму себя до победы. Растерялся
PHP:
скопировать код в буфер обмена
  1.  
  2. // Задача: функция 3 раза рандомит числа, от 0 до 5 и если конечная сумма меньше 14, то
  3. // рекурсим и увеличиваем кол-во попыток на 1
  4.  
  5. function sum14($quantityTry)
  6. {
  7.        
  8.   for ($i = 0; $i <= 3; $i++) { // ШАГ 0. Запускаем цикл на 3 раза = 3 рандома
  9.  
  10.     if($i == 3) { // ШАГ 2. После рандомов проверяем сумму
  11.                        
  12.       if($count < 14) { // Если сумма меньше 14
  13.         sum14($quantityTry++); // то рекурсимся и +1 к кол-ву попыток
  14.       } else {
  15.         return 'Результат ' . $count . '. За ' . $quantityTry . ' попыток'; // итог
  16.       }
  17.     }
  18.   $count += rand(0,6); // ШАГ 1. 3 раза рандомит и складывает сумму
  19.   }
  20. }
  21.  
  22.  
  23. $quantityTry=1;
  24. echo sum14($quantityTry); // тут жестокая реальность противится моей воле :\
  25.  

Спасибо Улыбка
hehagog545 Отправлено: 25 Августа, 2020 - 22:24:43 • Тема: Почему картинка не сохраняется в другой таблице? • Форум: Вопросы новичков

Ответов: 1
Просмотров: 290
картинки в базе? пахнет моветоном
может проще будет перемещать картинку в отдельную папку, а в базу имя картинки записывать?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB