Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите написать простенькое...
Форумы портала PHP.SU » » Вопросы новичков » Помогите написать простенькое...

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

1. valet - 20 Июля, 2011 - 14:44:08 - перейти к сообщению
Задача такая
Есть строка со значениями через запятую:
$stroka='значение 1, значение 2, ..., значение n';

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

Буду очень благодарен за помощь в коде.
2. Мелкий - 20 Июля, 2011 - 14:46:52 - перейти к сообщению
3. valet - 20 Июля, 2011 - 15:11:38 - перейти к сообщению
Выдает такое: Warning: array_slice() expects parameter 1 to be array
4. Мелкий - 20 Июля, 2011 - 15:17:01 - перейти к сообщению
А, да, напутал, array_rand возвращает ключ случайного элемента.
PHP:
скопировать код в буфер обмена
  1. $arr = explode(',',$ваша_строка);
  2. shuffle($arr);
  3. $result = array_slice($arr,0,5);
5. valet - 20 Июля, 2011 - 16:17:46 - перейти к сообщению
Работает без ошибок, но возвращает:
Array

Странно, как так.
6. Мелкий - 20 Июля, 2011 - 16:20:22 - перейти к сообщению
Ну так массив из 5-и элементов в результате, всё правильно.
7. valet - 20 Июля, 2011 - 16:25:13 - перейти к сообщению
Вы наверно не так меня поняли.
Выдает просто слово "Array" (вне зависимости от входной строки), мне надо выдать 5 случайных значений.
8. grefon - 20 Июля, 2011 - 16:29:43 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $str = 'значение 1, значение 2, значение 3, значение 4, значение 5, значение 6, значение 7, значение 8, значение 9';
  2. $array = explode(', ',$str);
  3. shuffle($array);
  4. $result = array_slice($array,0,5);
  5. echo implode(', ', $result);
  6.  
9. Мелкий - 20 Июля, 2011 - 16:31:36 - перейти к сообщению
Скорее вы меня не поняли. $result - массив значений. А если сделать echo, print (как и любую другую попытку вывода массива как строку) - ничего кроме Array выведено не будет.
Массивы выводятся поэлементно. Ну или implode и ещё чем-нибудь.
10. valet - 20 Июля, 2011 - 17:06:31 - перейти к сообщению
Да, я дилетант в php. Скорее я не так понял.
Большое спасибо за помощь, работает.
11. Slavenin - 20 Июля, 2011 - 19:34:34 - перейти к сообщению
Мелкий пишет:
Массивы выводятся поэлементно. Ну или implode и ещё чем-нибудь.

например очень удобна функция
12. Мелкий - 20 Июля, 2011 - 20:12:08 - перейти к сообщению

Slavenin, я var_dump предпочитаю, типы данных видно. Но и print_r и var_dump удобны для отладки, их использование для вывода массива - всё же очень редкая возможность.

 

Powered by ExBB FM 1.0 RC1