Перебор и сравнение 2-х массивов

Не получается реализовать сравнение и перебор 2-х многомерных массивов

 
Посетитель
small user social cms
Медаль
Сообщений: 232
Здравствуйте!

Возникла сложность в реализации логики написания кода, прошу помочь!

Есть два многомерных массива $array1

Код PHP:
  1.  
  2. (
  3. [1] => Array
  4. (
  5. [id] => 1
  6. [title] => title1
  7. )
  8. [2] => Array
  9. (
  10. [id] => 2
  11. [title] => title2
  12. )
  13. [3] => Array
  14. (
  15. [id] => 3
  16. [title] => title3
  17. )
  18. )
  19.  
и $array2

Код PHP:
  1.  
  2. (
  3. [1] => Array
  4. (
  5. [id] => 1
  6. [array1_id] =>1
  7. )
  8. [2] => Array
  9. (
  10. [id] => 2
  11. [array1_id] =>2
  12. )
  13. [3] => Array
  14. (
  15. [id] => 3
  16. [array1_id] =>2
  17. )
  18. )
  19.  

Через foreach делаю перебор:

Код PHP:
  1.  
  2. <?php foreach($array1 as $arr1){ ?>
  3.  
  4. <div><?php echo $arr1['title']?></div> //Заголовки первого массива
  5.  
  6. <?php foreach($array2 as $arr2){ ?>
  7.  
  8. <?php if($arr1['id'] == $arr2['array1_id']) { ?>
  9.  
  10.  
  11. //Тут данные из второго массива
  12.  
  13.  
  14. <?php } ?>
  15.  
  16. <?php } ?>
  17.  
  18. <?php } ?>
  19.  
  20.  
Проблема в том, что если у элемента первого массива нет соответствующих элементов из второго массива, то заголовок этого элемента все равно отображается.

Как сделать чтобы он не отображался?

p.s. массив примерный, будет намного больше!
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Что то у вас не так с циклом. Нет связи массивов. Возможно второй цикл должен быть как то так
Код PHP:
  1. foreach($array2 as $arr1 = $value){
  2. echo $key => $value;
  3. }
Редактировалось: 1 раз (Последний: 20 марта 2016 в 19:17)
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 232
Lora:

Что то у вас не так с циклом. Нет связи массивов. Возможно второй цикл должен быть как то так
Код PHP:
  1. foreach($array2 as $arr1 = $value){
  2. echo $key => $value;
  3. }

Спасибо что ответили, но ерунду сударь написали!
Посетитель
small user social cms
Медаль
Сообщений: 199
а где у вас условие не ровно? если 1<>2 то ...?
Посетитель
small user social cms
Медаль
Сообщений: 232
Вячеслав:

а где у вас условие не ровно? если 12 то ...?

Если не равно, то ничего выводить не нужно!
Посетитель
small user social cms
Медаль
Сообщений: 199
вот в том то и дело напишите это условие! и поставьте к примеру display: none
<?php if($arr1['id'] <> $arr2['array1_id']) { ?>
Посетитель
small user social cms
Медаль
Сообщений: 232
Вячеслав:

вот в том то и дело напишите это условие! и поставьте к примеру display: none


Вы не поняли, мне нужно скрыть код
Код PHP:
  1.  
  2. <div><?php echo $arr1['title']?></div> //Заголовки первого массива
  3.  
А он в первом массиве.

Я понимаю что возможно трудно понять чего я хочу, но я максимально попытался объяснить...
Посетитель
small user social cms
Медаль
Сообщений: 199
Да я примерно понимаю,я делал это на примере...перейдите на saratovplus.ru (сайт только делается).Перейдите в раздел люди,там увидите кнопку посмотреть,так вот там несколько условий,пройдитесь по пользователям,и по открывайте это подробнее,найдете,вариант где пользователь не оставил информации,а если это твоя страница будет вывод: отредактируйте свой профиль...это примерно одно и тоже,или же нет?
Посетитель
small user social cms
Медаль
Сообщений: 232
Вячеслав:

Да я примерно понимаю,я делал это на примере...перейдите на saratovplus.ru (сайт только делается).Перейдите в раздел люди,там увидите кнопку посмотреть,так вот там несколько условий,пройдитесь по пользователям,и по открывайте это подробнее,найдете,вариант где пользователь не оставил информации,а если это твоя страница будет вывод: отредактируйте свой профиль...это примерно одно и тоже,или же нет?

К сожалению я не смогу ответить на ваш вопрос, так как не совсем понял что Вы имели в виду, да и код формирования я не видел. Думаю если хотите помочь, то стоит ещё несколько раз внимательно прочитать мой пост, может поймете!
Спасибо за помощь!
Посетитель
small user social cms
Медаль
Сообщений: 199
То что у вас написано,так это написано в идеале,у вас нет условий если данные не соответствуют желаемого,то есть как понимаю я вам надо при не равенстве,большинстве,меньшинстве,прописать условия внутри которых будет инструкция к выполнению...так ли я вас понимаю?
Посетитель
small user social cms
Медаль
Сообщений: 199
В общем просто прочтите это и ваш вопрос можно будет наверное закрыть
<?php if (count($arr1)==1){ ?>-это если равно единице
Посетитель
small user social cms
Медаль
Сообщений: 232
Вячеслав:

В общем просто прочтите это и ваш вопрос можно будет наверное закрыть
-это если равно единице

К сожалению я вас опять не понимаю, попробуйте написать то что вы имеете в виду, кодом!
Посетитель
small user social cms
Медаль
Сообщений: 199
Итак у вас есть определенное правило если
<?php if($arr1['id'] == $arr2['array1_id']) { ?>,но если случается такой вариант как <?php if($arr1['id'] <> $arr2['array1_id']) { ?>? то у вас выводиться массив первый то есть <div><?php echo $arr1['title']?>,а в идеале вам нужно выводить если у первого массива есть данные и у второго(например вопрос -ответ) то пишите

<?php if (count($arr1)<=1){ ?>
<?php if (count($arr2)>=1){ ?>
//то есть если $arr1<= 1,то содержимое не показывать
<?php } ?>
<?php } ?>
сразу скажу что такой код будет работать но написан не грамотно,я так пишу к примеру
так более понятно?Ставьте это после сравнения $ar1 и $ar2
вот ссылка на ьануал по php по сравнению массивиов
http://php.net/manual/ru/language.operators.comparison.php
Редактировалось: 2 раз (Последний: 20 марта 2016 в 22:01)
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Вы сильно все усложняете когда два исходных массива формируете, зачем их два, делайте один и не мучайтесь. Пример необходимой структуры можно подсмотреть пропустив то что есть сейчас через это
Код PHP:
  1. foreach($array1 as &$arr1){
  2. foreach($array2 as $arr2){
  3. if($arr1['id'] == $arr2['array1_id']){
  4. $arr1['data'] = array('id' => $arr2['id'], 'array1_id' => $arr2['array1_id']);
  5. }
  6. }
  7. }
Skype: pasha--g
Модератор
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форума
Сообщений: 1422
В текущем варианте надо просто переставить строку 4 после 8 facepalm
Нормальный хостинг, сервера быстрые - пользуюсь сам.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: