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]   

> Без описания
bom6epMAN
Отправлено: 03 Июля, 2012 - 12:45:04
Post Id


Новичок


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


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




Здравствуйте. есть такой многомерный массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [pavilion_name] => Audi parts
  6.             [pavilion_description] => Все для Audi
  7.             [pavilion_tel1] => +375290000000
  8.             [pavilion_tel2] => +375(44) 000-00-00
  9.             [pavilion_tel3] =>
  10.             [pavilion_email] => saller_test@test.com
  11.             [price] => 6.24
  12.             [currency] => EUR
  13.         )
  14.  
  15.     [3] => Array
  16.         (
  17.             [pavilion_name] => ЧУП "Петров И.С."
  18.             [pavilion_description] => Все для ALFA
  19.             [pavilion_tel1] => +375(29) 000-00-00
  20.             [pavilion_tel2] =>
  21.             [pavilion_tel3] =>
  22.             [pavilion_email] => bomber25@mail.by
  23.             [price] => 6.67
  24.             [currency] => EUR
  25.         )
  26.  
  27.     [2] => Array
  28.         (
  29.             [pavilion_name] => Audi parts
  30.             [pavilion_description] => Все для Audi
  31.             [pavilion_tel1] => +375290000000
  32.             [pavilion_tel2] => +375(44) 000-00-00
  33.             [pavilion_tel3] =>
  34.             [pavilion_email] => saller_test@test.com
  35.             [price] => 6.74
  36.             [currency] => EUR
  37.         )
  38.  
  39.     [1] => Array
  40.         (
  41.             [pavilion_name] => Диас Авто Розница
  42.             [pavilion_description] => Мы готовы предложить своим клиентам высочайший уровень обслуживания и выбор запчастей от среднего класса до оригинала.
  43.             [pavilion_tel1] => +37529-382-96-36
  44.             [pavilion_tel2] =>
  45.             [pavilion_tel3] =>
  46.             [pavilion_email] => avtobuy.by@mail.ru
  47.             [price] => 7.13
  48.             [currency] => EUR
  49.         )
  50.  
  51.     [4] => Array
  52.         (
  53.             [pavilion_name] => Диас Авто Розница
  54.             [pavilion_description] => Мы готовы предложить своим клиентам высочайший уровень обслуживания и выбор запчастей от среднего класса до оригинала.
  55.             [pavilion_tel1] => +37529-382-96-36
  56.             [pavilion_tel2] =>
  57.             [pavilion_tel3] =>
  58.             [pavilion_email] => avtobuy.by@mail.ru
  59.             [price] => 7.84
  60.             [currency] => EUR
  61.         )
  62.  
  63. )
  64.  


Нужно из этого массива сделать такой:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [pavilion_name] => Audi parts
  6.             [pavilion_description] => Все для Audi
  7.             [pavilion_tel1] => +375290000000
  8.             [pavilion_tel2] => +375(44) 000-00-00
  9.             [pavilion_tel3] =>
  10.             [pavilion_email] => saller_test@test.com
  11.             [price] => 6.24
  12.             [currency] => EUR
  13.         )
  14.  
  15.     [3] => Array
  16.         (
  17.             [pavilion_name] => ЧУП "Петров И.С."
  18.             [pavilion_description] => Все для ALFA
  19.             [pavilion_tel1] => +375(29) 000-00-00
  20.             [pavilion_tel2] =>
  21.             [pavilion_tel3] =>
  22.             [pavilion_email] => bomber25@mail.by
  23.             [price] => 6.67
  24.             [currency] => EUR
  25.         )
  26.  
  27.     [1] => Array
  28.         (
  29.             [pavilion_name] => Диас Авто Розница
  30.             [pavilion_description] => Мы готовы предложить своим клиентам высочайший уровень обслуживания и выбор запчастей от среднего класса до оригинала.
  31.             [pavilion_tel1] => +37529-382-96-36
  32.             [pavilion_tel2] =>
  33.             [pavilion_tel3] =>
  34.             [pavilion_email] => avtobuy.by@mail.ru
  35.             [price] => 7.13
  36.             [currency] => EUR
  37.         )
  38. )
  39.  


Помогите, плиз.
 
 Top
DeepVarvar Супермодератор
Отправлено: 03 Июля, 2012 - 13:32:40
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Сдается мне это можно получить уже в БД с помощью GROUP иди DISTINCT
 
 Top
bom6epMAN
Отправлено: 03 Июля, 2012 - 13:43:15
Post Id


Новичок


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


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




Нужно пройтись по циклу по всем элементам массива, и сравнить текущий элемент со всеми остальными. Если у них совпадает ключ [pavilion_name], то тогда оставить тот элемент, у которого меньше ключ[price].

Но вот как сравнить текущий элемент с остальными я не знаю. Подскажите, плиз.
 
 Top
DeepVarvar Супермодератор
Отправлено: 03 Июля, 2012 - 14:02:43
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ..., MIN(price) price
  2.   FROM tbl
  3.   WHERE ...
  4.   GROUP BY pavilion_name
 
 Top
bom6epMAN
Отправлено: 03 Июля, 2012 - 14:08:06
Post Id


Новичок


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


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




Через mysql не получится, т.к. там сложная система, все эти данные хранятся в разных таблицах, и цена формируется "на-лету". Нужно через сравнение элементов массива по ключу, но как, не знаю.

Можно попробовать через array_intersect_ukey, но как в цикле это сделать не понимаю.
 
 Top
Bartezz
Отправлено: 03 Июля, 2012 - 18:20:11
Post Id



Гость


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


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




Может я чего не допонял, это нужно??

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. foreach ($old_array as $f_key=>$first)
  3. {
  4.     // удаляем дубли в которых "price" больше
  5.     foreach ($old_array as $s_key=>$second)
  6.     {
  7.         if ($first['pavillion']==$second['pavillion'] && $f_key<>$s_key)
  8.         {
  9.             if ($first['price']<$second['price'])
  10.             {
  11.                 unset($old_array[$s_key]);
  12.             }
  13.             else
  14.             {
  15.                 unset($old_array[$f_key]);
  16.             }
  17.         }
  18.     }
  19.    
  20.     // создание нового массива (если нужно)
  21.     if (isset($old_array[$f_key]))
  22.     {
  23.         $new_array[]=$first;
  24.     }
  25. }
  26. ?>

(Отредактировано автором: 03 Июля, 2012 - 18:59:44)

 
 Top
bom6epMAN
Отправлено: 04 Июля, 2012 - 01:09:27
Post Id


Новичок


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


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




Спасибо, то что нужно))
 
 Top
LIME
Отправлено: 04 Июля, 2012 - 01:23:43
Post Id


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


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


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




 
 Top
Dmur
Отправлено: 04 Июля, 2012 - 12:07:06
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2012  


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




Добрый день, нужна ваша помощь...
Имеется массив $m
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.              [key] =>1
  4.             [Login] => admin
  5.             [FIO] => fio
  6.             [...] => ...
  7.             ...
  8.     )
  9.  


Как мне получить имена ключей массива в список типа



или как составить запрос к базе access для извлечение имен столбцов таблицы?

Подскажите пожалуйста!
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2012 - 13:11:48
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




 
 Top
Dmur
Отправлено: 04 Июля, 2012 - 13:45:45
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2012  


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




DeepVarvar пишет:


Спасибо большое... ) помогло.

А есть вообще возможность через запрос извлечь имена столбцов таблицы базы Access 2010
 
 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