fork download
  1. <?php
  2. function random_sample($massiv, $how_much) {
  3. // array_rand - пример плохого дизайна в "PHP":
  4. // если второй аргумент равен 1, возвращает значение, иначе возвращает массив.
  5. // А ещё обёртка понадобилась, потому что она возвращает ключи.
  6. return $how_much === 1 ? $massiv[array_rand($massiv)] : array_values(array_intersect_key($massiv, array_flip(array_rand($massiv, $how_much))));
  7. }
  8.  
  9. class get_advice {
  10. const ADVICES_VERBS = [
  11. 'выключите',
  12. 'включите',
  13. 'перезагрузите',
  14. 'проверьте',
  15. 'переустановите',
  16. 'запустите',
  17. 'закройте',
  18. ];
  19. const ADVICES_NOUNS = [
  20. ['компьютер'],
  21. ['роутер'],
  22. ['программу'],
  23. ['средство', 'восстановления', 'Windows'],
  24. ['браузер'],
  25. ['сайт'],
  26. ['панель', 'управления'],
  27. ['антивирус'],
  28. ];
  29. const ADVICES_PREPS = [
  30. ['а', 'затем'],
  31. ['после', 'чего'],
  32. ['и'],
  33. ['а', 'если', 'это', 'не', 'сработает,', 'то'],
  34. ];
  35. function __toString() {
  36. $verbs = random_sample(self::ADVICES_VERBS, 2);
  37. $nouns = array_map(function($pituh) {return implode(' ', $pituh);}, random_sample(self::ADVICES_NOUNS, 2));
  38. $prep = random_sample(self::ADVICES_PREPS, 1);
  39. $verbs[0] = mb_convert_case($verbs[0], MB_CASE_TITLE);
  40. $joiner = $prep[0] !== 'и' ? ', ' : ' ';
  41. $prep = implode(' ', $prep);
  42.  
  43. return "$verbs[0] $nouns[0]$joiner$prep $verbs[1] $nouns[1].";
  44. }
  45. }
  46.  
  47. echo new get_advice(), "\n";
  48.  
Success #stdin #stdout 0.02s 24264KB
stdin
Standard input is empty
stdout
Включите программу, а если это не сработает, то закройте браузер.