@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js

Как объединить полученные данные в один массив?

есть у меня три цикла, которые нужно связать между собой.

Первый
выводит список производителей упорядоченных по алфавиту с указанием заглавной буквы
вот такого вида и количеством позиций в каждом

435fd566f4f24e3a9ed326568536a383.jpg
foreach(range('A', 'Z') as $letter) {
				$data = $mysqli->query("SELECT * FROM marka WHERE LCASE(LEFT(name_marka,1))='$letter' AND show_index=1");
			        $asd = mysqli_num_rows($data);
							if($asd>0){
								echo '<ul class="brand" ><h3 style="margin: 0px 10px 0px 0px;color: #000;">'.$letter.'</h3>';
		    					while($row = mysqli_fetch_array($data)){
									$id=$row['id_marka'];
										$r1 = $mysqli->query("SELECT * FROM board_post, marka, model  WHERE  model.id_model=board_post.id_model AND board_post.id_marka=marka.id_marka  AND board_post.id_marka='$id'");
			                            $n1 = mysqli_num_rows($r1);
					                    if($n1>0){echo '<li class="brand" href="board/'.$row['id_marka'].'"><label><input type="radio" name="id_marka" id="id_marka" value="'.$row['id_marka'].'"><b>'.$row['name_marka'].'</b> ('.$n1.')</label></li>';}
					                    else{
					                        echo '<li class="brand" href="board/'.$row['id_marka'].'"><label><input type="radio" name="id_marka" id="id_marka" value="'.$row['id_marka'].'">'.$row['name_marka'].' ('.$n1.')</label></li>';
					                    }
										
		                        }           
				                echo '</ul>';
			                }
	                }


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

$abc = array( "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я");
					echo '<ul class="brand" ><h3 style="margin: 0px 10px 0px 0px;color: #000;">А-Я</h3>';
					foreach($abc as $letter) {
                    $data = $mysqli->query("SELECT * FROM marka WHERE LCASE(LEFT(name_marka,1))='$letter' AND show_index=1");
			        $asd = mysqli_num_rows($data);

							if($asd>0){

		    					while($row = mysqli_fetch_array($data)){

					                    echo '<li class="brand" href="board/'.$row['id_marka'].'"><label><input type="radio" name="id_marka" id="id_marka" value="'.$row['id_marka'].'"><b>'.$row['name_marka'].'</b></label></li>';
										
		                        }           
			                }
					}
					echo '</ul>';


ну и третий это вывод массива в три колонки
$values = array(1,2,3,4,5,6,7,8,9,0); // Массив данных
						$count_rows = ceil(count($values)/3); // Получаем количество элементов в столбце где 3 это к-во столбцов
                        $rows = array_chunk($values, $count_rows); //Делим массив на части

                        foreach ($rows as $row) { //Выводим столбцы
                            print '<ul style="display: inline-block;vertical-align: top;">'; //Открываем столбец
                            foreach ($row as $value) { //Выводим элементы внутри родительского столбца
                                print '<li>' . $value . '</li>';
                            }
                            print '</ul>';//Закрываем столбец
                        }


Никак не могу объединить полученные данные из первого и второго циклов и пропустить через третий
  • Вопрос задан
  • 2480 просмотров
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Никогда не пишите запросы в цикле.
Вам нужно сделать ровно 1 запрос в базу, получить всех производителей, потом за 1 проход раскидать эти данные по буквам. Это будет адски быстрее чем то что у вас сейчас.

PS
И почитайте про MVC какой нибудь, когда в коде перемешана логика, sql запросы и html верстка - это ад.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы