За последние 24 часа нас посетили 21733 программиста и 1055 роботов. Сейчас ищут 726 программистов ...

Сгенерировать массив из случайных n элементов

Тема в разделе "PHP для новичков", создана пользователем mrnmrzv, 31 окт 2018.

  1. mrnmrzv

    mrnmrzv Новичок

    С нами с:
    11 окт 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Россия, Смоленск
    Почему вместо массива выводится слово 'Array'?

    PHP:
    1. class GetArray extends TaskPrototype { // Задание №7
    2.  
    3.     public $n=10;
    4.  
    5.     private function genArray($n){
    6.         $aRes = [];
    7.         for ($i = 0 ; $i < $this->n; $i++)
    8.             $aRes[] = rand(0,100);
    9.         return $aRes;
    10.     }
    11.  
    12.     public function func(){
    13.         $out[] = "n={$this->n}";
    14.         $out[] = "Массив {$this->genArray($this->n)}";
    15.         return $out;
    16.     }
    17. }
    Безымянный.jpg
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    А зачем создавать класс, для такой задачи?
    --- Добавлено ---
    массив $aRes вроде не сохранится, его надо указывать в свойстве класса

    Ты не написала, как вызываешь эти методы класса
    --- Добавлено ---
    А у тебя парень есть? :D
     
  3. mrnmrzv

    mrnmrzv Новичок

    С нами с:
    11 окт 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Россия, Смоленск
    Dimon2x
    Такое задание. Работа с классами и методами..

    Попробовала свойства записать, не помогло.

    Абстрактный класс

    PHP:
    1. abstract class  TaskPrototype
    2. {
    3.     public $title;
    4.     public $number;
    5.     public $description;
    6.  
    7.     public function __construct($params = [])
    8.     {
    9.      
    10.         foreach ($params as $key => $value){
    11.             if (property_exists(static::class,$key))
    12.                 $this->$key = $value;
    13.         }
    14.  
    15.     }
    16.  
    17.     /**
    18.      * @return string[]
    19.      */
    20.     abstract public function func();
    21. }
    Есть
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Бросай, пушто он не программист :D
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    @mrnmrzv
    PHP:
    1. class GetArray extends TaskPrototype { // Задание №7
    2.     public $n=10;
    3.    
    4.     private function genArray($n){
    5.         $aRes = [];
    6.         for ($i = 0 ; $i < $this->n; $i++)
    7.             $aRes[] = rand(0,100);
    8.    
    9.         return $aRes;
    10.     }
    11.     public function func(){
    12.        
    13.         $out[] = "n={$this->n}";
    14.         $out["Массив"] =  $this->genArray($this->n);
    15.        
    16.         return $out;
    17.     }
    18. }
    19.  
    20. $a = new GetArray();
    21.  
    22. echo '<pre>';
    23. print_r($a->func());
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    :D все хватаются за что угодно и ищут подвох, это смешно :D
    зачем бросать пусть его научит :)
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1. $a = range ( 0, $this -> n );
    2.  
    3. shuffle ( $a );
    4.  
    5. return $a;
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    @MouseZver а может ей надо было ещё циклы проходить
     
  9. mrnmrzv

    mrnmrzv Новичок

    С нами с:
    11 окт 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Россия, Смоленск
    сделала так. все получилось
    PHP:
    1. class GetArray extends TaskPrototype { // Задание №7
    2.  
    3.     public $n=10;
    4.    
    5.     private function genArray($n){
    6.         $aRes = [];
    7.         for ($i = 0 ; $i < $this->n; $i++)
    8.             $aRes[] = rand(0,100);
    9.         return $aRes;
    10.     }
    11.  
    12.     public function func(){
    13.         $out[] = "n={$this->n}";
    14.         $out[] = implode(",", $this->genArray($this->n));
    15.         return $out;
    16.     }
    17. }
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    в задание такое упомянуто ?
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    И никто ведь сразу девушке не заметил из отвечающих, что массивы нельзя в php сразу кидать в строку, нужно сначала или склеить или сделать var_dump/var_export/print_r

    @mrnmrzv, молодец, что сама догадалась :)
     
  12. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @mkramer, в 5-м сообщении написано "как", но не написано "почему" :)