PHP: как напечатать строку многомерного массива с условиями

Я новичок в PHP. Я хотел бы печатать строки на основе определенных условий. Например, у меня есть набор данных из SQL-запроса (показан ниже), и я хочу напечатать все строки [Серии №] только тогда, когда Тип = 210 и Категория = J. Я знаю, что в этом следует использовать цикл foreach случае, но я не знаю, как.

PHP: как напечатать строку многомерного массива с условиями

И это то, что я пробовал. Я знаю, что это неправильно, но, как я уже сказал, я новичок и самоучусь.

$get_data = sqlsrv_query($connde, $mainquery);

$data_array = [];
while ($row = sqlsrv_fetch_array($get_data, SQLSRV_FETCH_ASSOC)) {
    $data_array[$row["Type"]][$row["Category"]][$row["Series No"]][$row["End Date"]];
}


foreach ($data_array as $value1) {
    if ($value1 = 210) {
        foreach ($value1 as $value2) {
            if isset($value2 == 'J')
            echo "<td>" . $row["Series No"] . "</td>";

        }
    }
}

Строка в вашем while ничего не делает, вы хотите назначить ее какой-то переменной?

AbraCadaver 14.12.2020 15:08
$value1 = 210 присваивает номер, который вы хотите $value1 == 210 сравнить
brombeer 14.12.2020 15:09
SELECT * FROM SeriesNo WHERE Type = 235 AND Category = 'J' Затем вы просто печатаете все, что возвращается, не нужно фильтровать в своем цикле.
dazed-and-confused 14.12.2020 15:10

@AbraCadaver да, знаю, но это для другого случая.

tokuchi_toua 14.12.2020 15:15

@brombeer Да, но $value1=210 тоже не работает.

tokuchi_toua 14.12.2020 15:16

@dazed-and-confused Да. Но, к сожалению, это не то решение, которое я ищу, потому что я хотел распечатать и другие данные из того же запроса.

tokuchi_toua 14.12.2020 15:18

Хорошо, тогда, как упоминалось выше @AbraCadaver. Ваш цикл while ничего не делает. Комментарий @brombeer о вашем if также нуждается в исправлении.

dazed-and-confused 14.12.2020 15:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
338
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете работать со строками напрямую:

<?php
$mainquery = 'SELECT `Type`, `Category`, `Series No`, `End Date` FROM `Foo`'; 
$get_data  = sqlsrv_query($connde, $mainquery);

while ($row = sqlsrv_fetch_array($get_data, SQLSRV_FETCH_ASSOC)) {
    if ($row['Type'] == 210 && $row['Category'] == 'J') {
        echo "<td>" . $row['Series No'] . "</td>";
    }
}

Мой Бог! Идеальный! Спасибо :) Никогда не думал, что это так просто!

tokuchi_toua 16.12.2020 09:57

В противном случае, если вам нужны строки на потом, или вы передаете данные вокруг присваивания другому массиву: $data[] = $row;

Progrock 16.12.2020 10:48

если я назначу другой массив, как вы сказали: $data[ ]= $row, как мне определить функцию позже? Могу ли я по-прежнему использовать if ($row['Type'] == 210 && $row['Category'] == 'J')? или мне нужно что-то еще?

tokuchi_toua 16.12.2020 16:03

@anis Я только упомянул об этом, потому что иногда данные передаются в представления или из одной функции в другую. Вы бы просто зацикливали $data, как если бы это были строки.

Progrock 16.12.2020 17:58

Я понимаю, что что-то подобное было вашим намерением, но тело вашего опубликованного цикла while запутано.

Progrock 16.12.2020 18:02

Другие вопросы по теме