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]   

> Без описания
KingStar
Отправлено: 19 Августа, 2011 - 15:20:35
Post Id



Участник


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


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




Приветствую.

Вопрос в следующем.

имеется массивы

CODE (text):
скопировать код в буфер обмена
  1. [s1] => Array (
  2.                        [0]=> Audi
  3.                        [1] => BMW )
  4. [s2] => Array (
  5.                         [0] => Array
  6.                                 ( [0] => 100
  7.                                   [1] => 200 )
  8.                         [1]=> Array (
  9.                                   [2] => e36
  10.                                   [3] => e46 ) )
  11. [s3] => Array (
  12.                                   [2] => Array (
  13.                                              [0] => красный
  14.                                              [1] => черный )
  15.                                   [3] => Array (
  16.                                              [2] => синий
  17.                                              [3] => зеленый ) )



либо может кому проще будет вот так читать:
[s1] =>Array ( [0] => Audi [1] => BMW )
[s2] =>Array ( [0] => Array ( [0] => 100 [1] => 200 ) [1] => Array ( [2] => e36 [3] => e46 ) )
[s3] =>Array ( [2] => Array ( [0] => красный [1] => черный ) [3] => Array ( [2] => синий [3] => зеленый ) )

как их объеденить, чтобы на выходе получилисось так:

Audi - 100
Audi - 200
Бмв - e36 - красный
Бмв - e36 - черный
Бмв - e46 - синий
Бмв - e46 - зеленый


Пробовал вот так:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. foreach($_POST['s1'] as $v1=>$s1) {
  4.  
  5.         foreach($_POST['s2'][$v1] as $v2=>$s2) {
  6.  
  7.                    foreach($_POST['s3'][$v2] as $v3=>$s3) {
  8.        
  9.        
  10.         echo $s1." - ".$s2." - ".$s3."<br>";
  11.        
  12.                    }
  13.  
  14.         }
  15.        
  16. }
  17.                
  18.  


когда идет слияние второго с третьим, то он не обнаруживает ключей для массива Audi и выдает ошибку, и выводит только

Бмв - e36 - красный
Бмв - e36 - черный
Бмв - e46 - синий
Бмв - e46 - зеленый

Что делать??? как подставить чтоли пустые значения, или еще что сделать???


хелп

(Отредактировано автором: 19 Августа, 2011 - 15:21:18)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
КЫР
Отправлено: 19 Августа, 2011 - 17:00:44
Post Id



Частый гость


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach ($s1 as $num=>$car)
  3. {
  4.    print $car.' - ';
  5.    foreach ($s2[$num] as $num2=>$type)
  6.    {
  7.        print $type.' - ';
  8.        foreach ($s3[$num2] as $num3=>$color)
  9.            print $color;
  10.    }
  11. }
  12.  


не проверял, но попробуй так


-----
Fuck you guys, I'll going home
 
 Top
KingStar
Отправлено: 19 Августа, 2011 - 18:11:08
Post Id



Участник


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


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




К сожалению не то, опять же когда не находить ключ - экранизируются ошибки, и на выходе получаем

BMW - e36 - красный - черный - e37 - синий - зеленый


Сейчас пробую вклеить проверку на наличие ключа с помощью array_key_exists, вроде получается, в скобках уже запутался =)))


-----
То что программа работает, не означает что она написана правильно!
 
 Top
KingStar
Отправлено: 20 Августа, 2011 - 03:30:26
Post Id



Участник


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


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




Короче, сам решил проблему...

1. сканируем первый масив

PHP:
скопировать код в буфер обмена
  1. foreach($_POST['s1'] as $v1=>$s1) {


2. Проверяем наличие ключа во втором



3. Если нет ключа - вывод:



Вывод:
Honda

4. В противном случае продолжаем сканировать второй массив

PHP:
скопировать код в буфер обмена
  1. foreach($_POST['s2'][$v1] as $v2=>$s2) {


5. Снова проверяем наличие ключа в третьем




6. Если нет ключа - вывод:



Вывод:
Audi - 100
Audi - 200


и т.д. неограниченное кол-во...


Итоговый вывод:
Honda
Audi - 100
Audi - 200
Бмв - e36 - красный
Бмв - e36 - черный
Бмв - e46 - синий
Бмв - e46 - зеленый

и т.д.


-----
То что программа работает, не означает что она написана правильно!
 
 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