Как отделить значение массива по условию

Svileff

Новичок
У меня есть массив
Код:
Array
(
    [0] => Array
        (
            [id] => 9
            [baza_e] => net-vody-v-mashinke
            [price_e_baza] => zamena-pompy
            [percent_baza] => 0
            [brand_e_baza] =>
        )

    [1] => Array
        (
            [id] => 13
            [baza_e] => net-vody-v-mashinke
            [price_e_baza] => zamena-pompy
            [percent_baza] => 30
            [brand_e_baza] => beko
        )

)
Задача: если есть значение beko и оно совпадает с [brand_e_baza] то вывести записи с ним если значение другое или нет то вывести без него. Решение нашёл такое:
Код:
foreach($baza_res as $i){
    if($i['brand_e_baza'] == $_POST['brand']){
        $ress[] = $i;
    }elseif($i['brand_e_baza'] !== $_POST['brand']){
        $ress[] = $i;
    }
}
Но когда значение $_POST['brand'] нет или не совпадает он выводит все. Как исправить?
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
Код:
foreach($baza_res as $i){
    if($i['brand_e_baza'] == $_POST['brand']){
        $ress[] = $i;
    }elseif($i['brand_e_baza'] !== $_POST['brand']){
        $ress[] = $i;
    }
}
если шарик красный положи его в коробку, иначе если шарик не красный положи его в коробку.
что не правильно? хочется только красные в коробке иметь.
 

Svileff

Новичок
если шарик красный положи его в коробку, иначе если шарик не красный положи его в коробку.
что не правильно? хочется только красные в коробке иметь.
Это в своем роде должно получится как кран. Если совпало значение то выведи только с ним (Массив [1]). Остальные убери (массив [0]). Или если не совпало то вывести значение массива [0] а значение [1] убери.
 

Svileff

Новичок
Если записей много получаю такой массив
Код:
Array
(
    [0] => Array
        (
            [id] => 17
            [baza_e] => ne-slivaet-vodu
            [price_e_baza] => zamena-pompy
            [percent_baza] => 60
            [brand_e_baza] =>
        )

    [1] => Array
        (
            [id] => 20
            [baza_e] => ne-slivaet-vodu
            [price_e_baza] => zamena-tena
            [percent_baza] => 70
            [brand_e_baza] =>
        )

    [2] => Array
        (
            [id] => 21
            [baza_e] => ne-slivaet-vodu
            [price_e_baza] => zamena-pompy
            [percent_baza] => 45
            [brand_e_baza] => beko
        )

)
А надо получить такой:
Код:
Array
(
    [0] => Array
        (
            [id] => 20
            [baza_e] => ne-slivaet-vodu
            [name_baza] => Не сливает воду
            [price_e_baza] => zamena-tena
            [percent_baza] => 70
            [brand_e_baza] =>
        )

    [1] => Array
        (
            [id] => 21
            [baza_e] => ne-slivaet-vodu
            [name_baza] => Не сливает воду
            [price_e_baza] => zamena-pompy
            [percent_baza] => 45
            [brand_e_baza] => beko
        )

)
Так как [0] и [2] имеют одинаковое значение [price_e_baza]
 

Valick

Новичок
Всегда удивляло "умение" людей игнорировать наводящие вопросы.
Svileff, хорошо, скажу прямым текстом и русским языком. Проблема у тебя не там где ты пытаешься её решить. То что ты сейчас пытаешься сделать - это называется "костыль". И всё бы ничего, но в большинстве случаев костыли не решают задачу на 100%, чаще всего это какой-то частный случай и в будущем проблема может снова появиться, а еще хуже может случиться трудно-диагностируемая плавающая ошибка.
 

Svileff

Новичок
Всегда удивляло "умение" людей игнорировать наводящие вопросы.
Svileff, хорошо, скажу прямым текстом и русским языком. Проблема у тебя не там где ты пытаешься её решить. То что ты сейчас пытаешься сделать - это называется "костыль". И всё бы ничего, но в большинстве случаев костыли не решают задачу на 100%, чаще всего это какой-то частный случай и в будущем проблема может снова появиться, а еще хуже может случиться трудно-диагностируемая плавающая ошибка.
Я понимаю как это смотреться со стороны. На есть задача и её надо выполнить.
 

Svileff

Новичок
откуда массив?
Массив получаю по запросу
'SELECT * FROM baza_site WHERE name_baza LIKE "%'.$Item.'%"'
$Item - слова из описание проблемы получаю из формы и Бренд тоже получаю из формы

Получаем список услуг подходящий к проблеме:
Код:
Array
(
    [0] => Array
        (
            [id] => 17
            [baza_e] => ne-slivaet-vodu
            [name_baza] => Не сливает воду
            [price_e_baza] => zamena-pompy
            [percent_baza] => 60
            [brand_e_baza] =>
        )

    [1] => Array
        (
            [id] => 20
            [baza_e] => ne-slivaet-vodu
            [name_baza] => Не сливает воду
            [price_e_baza] => zamena-tena
            [percent_baza] => 70
            [brand_e_baza] =>
        )

    [2] => Array
        (
            [id] => 21
            [baza_e] => ne-slivaet-vodu
            [name_baza] => Не сливает воду
            [price_e_baza] => zamena-pompy
            [percent_baza] => 45
            [brand_e_baza] => beko
        )

)
Если бренд совпадает с [brand_e_baza] то надо его сначала показать а без бренда (услуга по умолчанию) убрать. Остальные тоже надо показать. Услуга не должна повторятся [price_e_baza].

Одним словам в базе есть услуги по умолчанию а есть конкретно под технику. И при совпадении 2 параметров надо вывести этот список.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
Это в своем роде должно получится как кран. Если совпало значение то выведи только с ним (Массив [1]). Остальные убери (массив [0]). Или если не совпало то вывести значение массива [0] а значение [1] убери.
где? напиши уже!
 

Valick

Новичок
Вопрос: - откуда массив?
Ответ: - из базы данных.
Неужели это действительно так сложно?
Когда я задавал этот вопрос, я на 83,7% был уверен, что массив из БД, но это важная информация которая требует 100% уверенности. Поэтому нет ничего проще чем спросить.
У тебя проблема в самом запросе. Почитай про group by и union.
 

Svileff

Новичок
Вопрос: - откуда массив?
Ответ: - из базы данных.
Неужели это действительно так сложно?
Когда я задавал этот вопрос, я на 83,7% был уверен, что массив из БД, но это важная информация которая требует 100% уверенности. Поэтому нет ничего проще чем спросить.
У тебя проблема в самом запросе. Почитай про group by и union.
Спасибо за подсказку. Сам подозревал что проблема может быть в запросе.
 

Svileff

Новичок
Я пытаюсь написать запрос но результат получаю тот же. Что я не так делаю? Можете помочь.
Код:
SELECT * FROM baza_site WHERE name_baza LIKE "%'.$breakage.'%" GROUP BY price_e_baza UNION SELECT * FROM baza_site WHERE brand_e_baza = "'.$_POST['brand'].'"
 
Сверху