Как сопоставить несколько массивов внутри цикла foreach?

#php #arrays #loops #pdo

#php #массивы #циклы #pdo

Вопрос:

мой вопрос: как сопоставить несколько массивов (два или даже больше) внутри цикла foreach (или while)

вот m'y <code>Var_dump</code>

 $cat = $bdd->query('SELECT cat_name FROM categories');
$categories_list = $cat->fetchAll(PDO::FETCH_COLUMN);


$cat_id = $bdd->query('SELECT cat_id FROM categories');
$categories_id = $cat_id->fetchAll(PDO::FETCH_COLUMN);


$arrcatid = array($categories_list,$categories_id);

echo '<form method="post" action="accès/create_topic_post.php" autocomplete="off">';
echo '<label for="sujet">Sujet :';
echo '<input type="text" name="sujet" id="sujet" required autofocus>';
echo '</label>';
echo '<label for="cat">Catégories :';
echo '<select name="topic_name">';



foreach ($categories_list as $cat_name){
echo "<option value="$cat_name">$catname</option>";
}
$cat_id->closeCursor();
$cat->closeCursor();


echo '</select>';
echo '</label>';
echo '<input type="submit" value="Envoyer">';
echo '</form>';
var_dump($arrcatid);
  

Итак, цель состоит в том, чтобы сопоставить массив 0 с массивом 1 cat_name amp;amp; cat_id

Большое спасибо: D

Ответ №1:

Как насчет получения имени и идентификатора в sql-запросе?

 $cat = $bdd->query('SELECT cat_name, cat_id FROM categories');

   

Комментарии:

1. Затем измените его на PDO::fetchAll.

2. Это уже fetchall, $cat_id ->FetchAll(PDO::FETCH_COLUMN)

3. @RomainSickenberg почему бы вам не прочитать параметр, который вы используете? PDO::FETCH_COLUMN предназначен для получения самого первого поля. Если вам нужны другие поля, то вам нужен другой режим выборки. Если вы ничего не прочитаете в кодах, которые вы указали в stack overflow, то никакой ответ вам не поможет. Вы здесь, чтобы учиться, а не просить других людей выполнять вашу работу.

4. Извините, извините, я думал, что это говорит о ->FetchAll

Ответ №2:

Я использовал :

 $cat = $bdd->query('SELECT cat_name,cat_id FROM categories');
$categories_list = $cat->fetchAll(PDO::FETCH_KEY_PAIR);
  

и для foreach :

 foreach ($categories_list as $cat_id => $cat_name){
echo "<option value="$cat_name">$cat_id</option>";
  

Комментарии:

1. Этот вариант хорош, но я думаю, вам нужно поменять местами $cat_name и $ cat_id, показывая имена в поле выбора. в то время как идентификатор должен быть отправлен на сервер

2. Готово 🙂 Спасибо за экспертизу: D