php foreach на два разных массива

12
big boy
На сайте с 18.11.2006
Offline
314
4847

Массив первый такого вида:

Array

(
[21624] => Array
(
[fid] => 21624
[uid] => 4575
...
)

[21625] => Array
(
[fid] => 21625
[uid] => 4575
...
)

)

Второй:

Array

(
[0] => Array
(
[fid] => 21620
[uid] => 4575
...
)

[1] => Array
(
[fid] => 21621
[uid] => 4575
...
)

)

Структура foreach:


foreach($keys as $key => $value){
}

Проблема в том, что ключи у массивов разные. Как вы видите, один имеет 0, 1, второй - 21624 и 21625. В итоге получаю вывод $key как 0 и 1 и получаю только один массив. Массивов всего два, но на каждой странице сайта разные ключи и нужно универсальное решение.

Задача - вывести рядом в одном foreach элементы как первого, так и второго массивов.

Подскажите, как это лучше сделать?

✔ Как разблокировать сайт на Cloudflare - https://webmasta.ru/blog/12-roskomnadzor-blokiruet-sayty-na-cloudflare-kak-razblokirovat
SONcemvo
На сайте с 06.09.2009
Offline
102
#1


foreach($keys as $key => $value){
делаем что угодно с первым
foreach($keys['$key'] as $key2 => $value2)
{
и со вторым
}
}
big boy
На сайте с 18.11.2006
Offline
314
#2

SONcemvo, спасибо. Но у меня выдало ошибку "warning: Invalid argument supplied for foreach() in" да и печатает такой код немного неправильно. Получается foreach внутри другого foreach и он два раза печатает второй массив, а должен один раз.

PN
На сайте с 22.08.2012
Offline
103
#3


$keys1 = первый_массив;
$keys2 = второй_массив;

foreach (array_merge($keys1, $keys2) as $key=>$value)
{
...действия...

}
Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
K
На сайте с 03.06.2015
Offline
45
#4

А еще в php есть такая фишка

$array3 = $array1 + $array2;

:)

---------- Добавлено 23.06.2015 в 16:51 ----------

Однако тут явно была оказана помощь в изготовлении костылей, ибо диагноз: нарушение нормализации.

MYSQL PHP JS HTML CSS SEO TXT США СССР
big boy
На сайте с 18.11.2006
Offline
314
#5

Спасибо за советы, но опять всё мимо )))

Задача в том, чтобы вывести элементы массива в таблицу в определенном порядке. Грубо говоря так:

массив1[0]

массив2[21624]

массив1[1]

массив2[21625]

В массивах информация о прикрепленных к материалу сайта файлах. Один массив держит инфу о файлах в обёртке с инсталлятором, второй - обычные архивы.

Задача в том, чтобы дать ссылку на инсталлятор, а ниже или рядом - на архив. Вывод в обычной html таблице.

Можно конечно сделать две таблицы, с разными foreach, но тогда получается очень громоздко, а место хотелось бы сэкономить.

LEOnidUKG
На сайте с 25.11.2006
Offline
1752
#6

в массивах одинаковое количество элементов?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
big boy
На сайте с 18.11.2006
Offline
314
#7

Решил задачу. Ниже для тех, кому интересно.

Создал новый массив со всеми ключами через array_keys();

Грубо говоря так:

$array1 = array(0=000, 1=111);

$array2 = array(21624=aaa, 21625=bbb);

$keys = array_keys($array2);

$keys получается содержит array(0=21624, 1=21625);

И далее в уже готовый foreach можно вставлять $array2[$keys[0]]

Но в моём примере массивы многомерные, поэтому в foreach выводится всё вот так:

$array2[$keys[0]]->element1;

$array2[$keys[0]]->element2;

$array2[$keys[0]]->elementN;

LEOnidUKG
На сайте с 25.11.2006
Offline
1752
#8

по-моему там обычный for нужно было использовать.

K
На сайте с 03.06.2015
Offline
45
#9

Ага, for ... next();

ТС, как так получилось что записи об одной сущности оказались не связаны? Сделайте шаг назад, может еще не поздно. :)

big boy
На сайте с 18.11.2006
Offline
314
#10
kostyanet:
Ага, for ... next();

ТС, как так получилось что записи об одной сущности оказались не связаны? Сделайте шаг назад, может еще не поздно. :)

Там два совершенно не связанных друг с другом массива.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий