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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите написать простенькое...

 PHP.SU

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


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

> Без описания
valet
Отправлено: 20 Июля, 2011 - 14:44:08
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Задача такая
Есть строка со значениями через запятую:
$stroka='значение 1, значение 2, ..., значение n';

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

Буду очень благодарен за помощь в коде.
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июля, 2011 - 14:46:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)






-----
PostgreSQL DBA
 
 Top
valet
Отправлено: 20 Июля, 2011 - 15:11:38
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Выдает такое: Warning: array_slice() expects parameter 1 to be array
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июля, 2011 - 15:17:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А, да, напутал, array_rand возвращает ключ случайного элемента.
PHP:
скопировать код в буфер обмена
  1. $arr = explode(',',$ваша_строка);
  2. shuffle($arr);
  3. $result = array_slice($arr,0,5);


-----
PostgreSQL DBA
 
 Top
valet
Отправлено: 20 Июля, 2011 - 16:17:46
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Работает без ошибок, но возвращает:
Array

Странно, как так.
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июля, 2011 - 16:20:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ну так массив из 5-и элементов в результате, всё правильно.


-----
PostgreSQL DBA
 
 Top
valet
Отправлено: 20 Июля, 2011 - 16:25:13
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Вы наверно не так меня поняли.
Выдает просто слово "Array" (вне зависимости от входной строки), мне надо выдать 5 случайных значений.

(Отредактировано автором: 20 Июля, 2011 - 16:25:34)

 
 Top
grefon
Отправлено: 20 Июля, 2011 - 16:29:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




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.  


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июля, 2011 - 16:31:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Скорее вы меня не поняли. $result - массив значений. А если сделать echo, print (как и любую другую попытку вывода массива как строку) - ничего кроме Array выведено не будет.
Массивы выводятся поэлементно. Ну или implode и ещё чем-нибудь.


-----
PostgreSQL DBA
 
 Top
valet
Отправлено: 20 Июля, 2011 - 17:06:31
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Да, я дилетант в php. Скорее я не так понял.
Большое спасибо за помощь, работает.
 
 Top
Slavenin
Отправлено: 20 Июля, 2011 - 19:34:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Мелкий пишет:
Массивы выводятся поэлементно. Ну или implode и ещё чем-нибудь.

например очень удобна функция
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июля, 2011 - 20:12:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





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


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB