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. Rojas - 14 Ноября, 2011 - 21:25:12 - перейти к сообщению
Добрый день!
Не могу придумать, как организовать выборку из многомерного массива.
Массив $array вида:
user[0]=>'a', type[0]=>'000';
user[1]=>'a', type[1]=>'111';
user[2]=>'d', type[2]=>'333';
user[3]=>'a', type[3]=>'444';
....
user[n]=>'z', type[n]=>'999';

Необходимо получить значения ключей type[], из всех полей, где ключ user[] == 'a'.
Возможно ли это? Или делать запрос к базе в цикле? Ужасно не хочется.
Спасибо.
2. Данил_123 - 14 Ноября, 2011 - 21:33:24 - перейти к сообщению
$array[0][1].. В си так многомерные доят
3. DeepVarvar - 14 Ноября, 2011 - 21:33:30 - перейти к сообщению
Странная структура. Приведите весь код пожалуйста.
Скорее всего можно сделать проще, удобнее, а значит и правильнее.
4. Rojas - 14 Ноября, 2011 - 21:39:51 - перейти к сообщению
Ну структура-то не такая, конечно.. это я для наглядности просто..
Итак, $array - это результат выборки из таблицы с полями:
id | flag | user | eventid|
1 | значение 1| user1| 10 |
2 | значение 2| user2| 11 |
-------------------------------- ------
n | значение n| usern| 20|
(Добавление)
Данил_123 пишет:
$array[0][1].. В си так многомерные доят

Спасибо.. попробую щас ))
5. DeepVarvar - 14 Ноября, 2011 - 21:56:24 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach ($array as  $line)
  2.   if ($line['user'] == "a")
  3.     echo $line['eventid']."<br />";
6. Rojas - 14 Ноября, 2011 - 22:04:02 - перейти к сообщению
DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. foreach ($array as  $line)
  2.   if ($line['user'] == "a")
  3.     echo $line['eventid']."<br />";


Хм, спасибо )
Вопрос неправильно я сформулировал..
Значение ключа user - неизвестно.. мне просто надо выбрать те массивы из м.массива, в которых значения user одинаковы..
вот.

Чувствую, что надо использовать in_array, а как, не могу придумать.
7. mik_name - 14 Ноября, 2011 - 23:29:12 - перейти к сообщению
Через usort сортируете массив по user, а потом один раз проходитесь while-ом делая с одинаковыми строками все что вам нужно.
Эту задачу можно было проще решить, пока данные были в БД.
8. Rojas - 15 Ноября, 2011 - 06:17:19 - перейти к сообщению
mik_name пишет:
Через usort сортируете массив по user, а потом один раз проходитесь while-ом делая с одинаковыми строками все что вам нужно.
Эту задачу можно было проще решить, пока данные были в БД.


Точно.. про while я не подумал.. буду пробовать.
Спасибо!
А массив у меня отсортирован как раз по нужному ключу, просто я затупил, как его в цикле foreach проверять..

 

Powered by ExBB FM 1.0 RC1