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 :: Версия для печати :: foreach и array_rand
Форумы портала PHP.SU » » Вопросы новичков » foreach и array_rand

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

1. dimaua2 - 10 Августа, 2013 - 00:18:36 - перейти к сообщению
Есть форыч и там выводятся урлы на категории, как можно сделать вывод 3х случайных?
2. Саныч - 10 Августа, 2013 - 00:27:56 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $urls = []; // исходный массив
  2. $elsNum = count($url);
  3. $keys = (array) array_rand($urls, $elsNum > 3 ? 3 : $elsNum);
  4. foreach ($keys as $k) {
  5.     // ...
  6. }
3. dimaua2 - 10 Августа, 2013 - 00:54:05 - перейти к сообщению
сам додумался почти до такой же схемы, только без проверки)
все работает с одним минусом, если выводить без рандома то все гуд, когда с ним, он почему то берет иногда иды других категорий....и вот тут я понять не могу почему)
4. Okula - 10 Августа, 2013 - 01:05:22 - перейти к сообщению
dimaua2, наверно потому что это рандом и он выбирает из всех имеющихся в массиве Упёрся в стенку
5. dimaua2 - 10 Августа, 2013 - 01:09:27 - перейти к сообщению
Смотрите суть, я передаю в массив значения нужных мне категорий, без рандома выводит все правильно (те, что я так сказать отметил) с рандомом выводятся тупо все рубрики, что есть, а не те, что я передал в массив...
6. Okula - 10 Августа, 2013 - 01:15:59 - перейти к сообщению
dimaua2, значит у тебя неверный код. Ищи ошибку в логике. Тебе дали рабочий пример во втором посте. Используй его, если не можешь написать сам.
7. dimaua2 - 10 Августа, 2013 - 01:20:19 - перейти к сообщению
Проверил тот тоже) вот)
PHP:
скопировать код в буфер обмена
  1. $cat_id=4; //ид родительской категории
  2. $termchildren=get_term_children($cat_id, 'category');
  3. //var_dump($termchildren);
  4. $elsNum=count($termchildren);
  5. $keys=array_rand($termchildren, $elsNum > 3 ? 3 : $elsNum);
  6. //var_dump($keys);
  7. foreach ($keys as $child){
  8. $term=get_term($child, 'category');
  9. $title=$term->name;
  10. $slug=$term->slug;
  11. echo "<a href=\"/category/theme/$slug\"><img src=\"/wp-content/themes/tolkochto/img/cat/$slug.jpg\" title=\"$title\" alt=\"$title\" width=\"180\" height=\"135\" /></a><br/>"."<a href=\"/category/theme/$slug\">$title</a>";
  12. }
8. Okula - 10 Августа, 2013 - 12:52:28 - перейти к сообщению
Никто не знает что содержит в себе функция get_term_children(), а так же функция get_term().
Массив должен содержать в себе только те результаты из которых будет осуществляться выбор эллементов. Если массив будет содержать лишние эллементы то и ожидать корректной работы от скрипта не стоит.
Разберись с тем что записывается в массив $termchildren.

 

Powered by ExBB FM 1.0 RC1