Два foreach в одном php

Двойной foreach

эта позиция должна выводить три продукта а выводит только первый Лонгория-3.
Вот код поиска .

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
public function search($q){ $mysqli = $this->db->getMysqli(); $goods = [];//результирующий массив $find_title = $this->find_entry_title($this->getTitleCategory(),$q);//масив совпадений return $find_title; foreach ($find_title as $key=>$value): /*если $value - массив*/ if(mb_stripos($value,",")){ $value_arr = explode(",",$value); foreach($value_arr as $item): $query = "SELECT * FROM ".$this->config->db_prefix.$key." WHERE title = '$item'"; $result_set = $mysqli->query($query); $row = $result_set->fetch_assoc(); if($row) $goods[] = $row; endforeach; }/*если $value - не массив*/ else{ $query = "SELECT * FROM ".$this->config->db_prefix.$key." WHERE title = '$value'"; $result_set = $mysqli->query($query); $row = $result_set->fetch_assoc(); $goods[] = $row; } endforeach; return $goods; }

двойной foreach
привет. есть два массива $ar1 $ar2 нужно через foreach добавлять строки в $str по очереди.

Foreach внутри foreach
Посетители сайта видят список альбомов в мозаичном виде по 3 альбома в ряд, 12 альбомов на.

FOREACH
Доброго времени всем! есть таблица в БД, как на странице прорисовать с помощью foreach CREATE.

Foreach
Добрый день. Помогите пожалуйста ..как можно добавить в этот кусок кода такое что если у test_id.

morik1969, я не уверен, что мой пример решает вашу проблему, но судя по заголовку «двойной foreach» предполагаю, что вам нужно нечто вроде такого:

1 2 3 4 5 6 7 8 9 10 11 12
$arr = [ 'sofas' => 'ЛОНГОРИЯ-3 , ЛОНГОРИЯ , ЛОНГОРИЯ-4', 'corners' => 'ЛОНГОРИЯ-2', 'chairbeds' => 'КР-КРОВАТЬ ЛОНГОРИЯ' ]; foreach ($arr as $key => $item) { echo $key, ': '; foreach (explode(',', $item) as $word) { echo trim($word), '
'
; } }

Источник

Читайте также:  Statement type in java

Цикл FOREACH в PHP

С помощью цикла FOREACH мы можем перебрать все элементы массива и выполнить для них (или только для некоторых из них) какие-либо действия.

Например, так будет выглядеть вывод названий всех товаров:

 'Товар1', 'price' => 1000]; $products[] = ['name' => 'Товар2', 'price' => 2000]; $products[] = ['name' => 'Товар3', 'price' => 3000]; $products[] = ['name' => 'Товар4', 'price' => 4000]; foreach($products as $product) echo $product['name'] . '
';
Товар1 Товар2 Товар3 Товар4

Всего 2 строчки кода для вывода всех элементов! А теперь разберёмся, как это работает.

Принцип работы цикла FOREACH

Когда мы запускаем цикл, PHP берёт первое значение массива 5 и помещает его в переменную $value. Затем один раз выполняется блок кода echo $value; . Затем PHP делает тоже самое со вторым значением, третьим и т.д.

Получается, команды, принадлежащие циклу FOREACH, будут запущены для каждого элемента отдельно.

Для добавления нескольких команд нужно поместить их в фигурные скобки. Попробуем вывести названия товаров, цена которых выше 1000:

 'Товар1', 'price' => 1000]; $products[] = ['name' => 'Товар2', 'price' => 2000]; $products[] = ['name' => 'Товар3', 'price' => 3000]; foreach($products as $product) < if($product['price'] >1000) echo $product['name'] . '
'; >

Получение доступа к ключам массива выглядит следующим образом:

Перебор многомерного массива

Создадим обычный двумерный массив:

Если нужно перебрать элементы только одного подмассива, мы можем сделать так:

foreach($arr['title3'] as $value) echo $value, '
';

Если требуется вывести все подмассивы, мы можем использовать два цикла foreach, один внутри другого:

 $values) < echo 'Title: ', $title, '
'; foreach($values as $value) echo 'Value: ', $value, '
'; echo '
'; >
Title: title1 Value: 5 Value: 10 Value: 15 Title: title2 Value: 48 Value: 12 Value: 0 Title: title3 Value: 17 Value: 24 Value: 1280

Задача №1

1. Создайте массив $arr и заполните его тремя значениями.

2. С помощью цикла foreach выведите все ключи и значения этого массива. Между ключом и значением должна быть строка -> , а между элементами — перенос строки (тег
).

Задача 2

Выведите ключ и набор значений для каждого элемента верхнего уровня. Т.е. в браузере должно отобразиться следующее:

Ключ: 0 | Значения: 1, 2, 3 Ключ: 1 | Значения: 4, 5, 6 Ключ: 2 | Значения: 7, 8, 9

Важно: между значениями должны быть запятые, но перед первым и после последнего их быть не должно. 1,2,3 правильно, 1,2,3, не правильно.

Источник

Форум PHP программистов ► PHP практикум ► PHP для начинающих

Профиль
Группа: Пользователи
Сообщений: 4
Пользователь №: 38529
На форуме:
Карма:

Добрый день! Помогите разобраться с кодом. Файл «sites.txt» = список сайтов, «content.txt» = контент построчный.

$sites = array();
$sites = file($path_to_sites, FILE_IGNORE_NEW_LINES);

$contents = array();
$contents = file($path_to_contents, FILE_IGNORE_NEW_LINES);

foreach ($sites as $site)
if (trim($site) == «»)
continue;

foreach ($contents as $content)
if (trim($content) == «»)
continue;

Смысл в том, что для первой строчки sites.txt берем первую строку файла content.txt, для второй строки sites.txt вторую строку content.txt.

А у меня получается что для любой строки файла sites.txt, всегда подставляется первая строка файла content.txt.

Помогите пожалуйста, начинающему.

Профиль
Группа: Пользователи
Сообщений: 4
Пользователь №: 38529
На форуме:
Карма:

Сообщений: 474
Пользователь №: 37895
На форуме:
Карма: 22

Профиль
Группа: Пользователи
Сообщений: 4
Пользователь №: 38529
На форуме:
Карма:

Сообщений: 474
Пользователь №: 37895
На форуме:
Карма: 22

$sites = array(1,2,3,4,5);
$contents = array(1,2,3);

$maxcount = max(count($sites), count($contents));

for ($i=0; $i $maxcount; $i++)

if (empty($sites[$i]) || empty($contents[$i]))

continue;
>

echo "For the sites #$i (".$sites[$i].") contents:".$contents[$i]."
"
;
>

Профиль
Группа: Пользователи
Сообщений: 4
Пользователь №: 38529
На форуме:
Карма:

Сидел он, дум великих полон — и вдаль глядел

Сообщений: 15860
Пользователь №: 4190
На форуме:
Карма: 490

falloutvetal, так у тебя одной строке одного файла соответствует строго одна строка другого файла, с тем же порядковым номером. А зачем такой изврат?
Во-первых, если уж и использовать файлы, то хоть в одном всё собрать.
А во-вторых, тут «просится» работа с БД. И это будет более правильно, более просто и более удобно.

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* «накапливаю умение телепатии» (С) и «гуглю за ваш счет» (С)

Источник

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

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

foreach($keys as $key => $value)<
делаем что угодно с первым
foreach($keys[‘$key’] as $key2 => $value2)
<
и со вторым
>
>

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

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

foreach (array_merge($keys1, $keys2) as $key=>$value)
<

. действия.

>

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1

А еще в php есть такая фишка $array3 = $array1 + $array2; 🙂

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

Спасибо за советы, но опять всё мимо ))) Задача в том, чтобы вывести элементы массива в таблицу в определенном порядке. Грубо говоря так: массив1[0] массив2[21624] массив1[1] массив2[21625] В массивах информация о прикрепленных к материалу сайта файлах. Один массив держит инфу о файлах в обёртке с инсталлятором, второй — обычные архивы. Задача в том, чтобы дать ссылку на инсталлятор, а ниже или рядом — на архив. Вывод в обычной html таблице. Можно конечно сделать две таблицы, с разными foreach, но тогда получается очень громоздко, а место хотелось бы сэкономить.

✅ Трастовых площадок под размещение статей и ссылок. Опыт 15 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Новый аналог AllSubbmitter (заполнение форм) https://getmanylinks.ru/getmanysubmits.html (Бесплатное демо)

Решил задачу. Ниже для тех, кому интересно. Создал новый массив со всеми ключами через 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;

Источник

Два цикла foreach в один в PHP?

Я мог бы сделать вложенный foreach следующим образом:

foreach ($arrayone as $key => $value) < echo "

$value

"; foreach ($arraytwo as $keysub => $valuesub) < # code. if($keysub === $key) < echo "

$valuesub

"; > > >

это прекрасно работает, но я думаю, что это не самый эффективный способ, поскольку он проходит через второй массив для каждого элемента в первом. Это кажется неправильным.

Как сделать это более эффективным?

4 ответа

Используйте разумную структуру данных:

$content = array_map(null, $arrayone, $arraytwo); foreach ($content as $entry) < printf('

%s

', $entry[0]); printf('

%s

', $entry[1]); >
$content = array_combine($arrayone, $arraytwo); foreach ($content as $title => $body) < printf('

%s

', $title); printf('

%s

', $body); >

Вы можете просто использовать один для цикла:

for ($i = 0; $i < count($titlesArray); $i++) < echo "".$titlesArray[$i].""; echo "

".$paragraphsArray[$i]."

"; >

Поскольку все очевидные ответы уже были опубликованы, вот еще один способ сделать это

foreach (array_combine($arrayone, $arraytwo) as $title => $content) < printf('

%s

%s

', $title, $content); >

Предполагая, что вы правильно настроили массивы, чтобы всегда иметь одинаковый порядок и количество элементов:

Вы бы лучше с более разумным форматом массива, хотя:

$array = [ ['title' => 'Title one', 'content' => 'Content one'], ['title' => 'Title two', 'content' => 'Content two'], ]; 

Источник

Оцените статью