условие if в цикле foreach

Mr.Arsi

Новичок
Хочу сделать проверку элемента в цикле foreach так как цикл проходит по всем элементам соответственно и условие срабатывает каждый раз. Как решить правильно задачу нужно сделать одну проверку if результата foreach к примеру делаю так:

PHP:
<?php
foreach ($related as $related_new) { 

if($related_new['manufacturer_original'] == 'LYNXAUTO') {
    
echo "АНАЛОГ";
echo "<br>";
echo $related_new['manufacturer_original'];
echo "<br>";
    
}

}
?>
получаю результат

АНАЛОГ
LYNXAUTO
АНАЛОГ
LYNXAUTO
АНАЛОГ
LYNXAUTO

Вроде все верно но как сделать так чтобы слово аналог выводилось один раз то есть правильно составить цикл foreach. Правильный вывод должен быть таким к примеру

АНАЛОГ
LYNXAUTO
LYNXAUTO
LYNXAUTO

Помогите пожалуйста
 

scorpion-ds

Новичок
PHP:
<?php
echo "АНАЛОГ";
foreach ($related as $related_new) {

if($related_new['manufacturer_original'] == 'LYNXAUTO') {
   
echo "<br>";
echo $related_new['manufacturer_original'];
echo "<br>";
   
}

}
?>
 

Mr.Arsi

Новичок
PHP:
<?php
echo "АНАЛОГ";
foreach ($related as $related_new) {

if($related_new['manufacturer_original'] == 'LYNXAUTO') {
  
echo "<br>";
echo $related_new['manufacturer_original'];
echo "<br>";
  
}

}
?>
Дело в в том что там будут другие производители то есть условие if будет выбирать над какими элементами выводить к примеру там будут оригинальные произодители и вывод сообщение будет другим к примеру
else {
echo " ОРИГИНАЛЬНЫЙ ЗАМЕНИТЕЛЬ";

}

А ТО ЧТО ВЫ ПРЕДЛОЖИЛИ ОНА ПРОСТО ТУПО ВСТАВИТ БЕЗ ОПРЕДЕЛЕНИЯ ДЕТАЛИ !
 

WMix

герр M:)ller
Партнер клуба
PHP:
$showed = false;
//...
if( !$showed ){
  echo "АНАЛОГ";
  $showed = true;
}
 

fixxxer

К.О.
Партнер клуба
Незачем так орать.

Вариант WMix-а норм (разве что при куче условий будет массив показанных). Но для упрощения логики будет намного проще разбить на два цикла и соответственно две задачи.
В первом ты формируешь структуру, удобную для вывода (в виде вложенных массивов), во втором - выводишь. В этом случае в первом цикле никаких флагов не надо - само наличие соответствующего вложенного массива уже будет одновременно флагом.
 

Mr.Arsi

Новичок
Незачем так орать.

Вариант WMix-а норм (разве что при куче условий будет массив показанных). Но для упрощения логики будет намного проще разбить на два цикла и соответственно две задачи.
В первом ты формируешь структуру, удобную для вывода (в виде вложенных массивов), во втором - выводишь. В этом случае в первом цикле никаких флагов не надо - само наличие соответствующего вложенного массива уже будет одновременно флагом.
можно очень вас прошу пример как можно было бы сделать в вашем варианте а пример WMix я не понял (
 

scorpion-ds

Новичок
PHP:
<?php
$showed = [];
foreach ($related as $related_new) {
    if($related_new['manufacturer_original'] == 'LYNXAUTO') {

        if(!in_array('АНАЛОГ', $showed)) {
            echo "АНАЛОГ";
        }
      
        echo "<br>";
        echo $related_new['manufacturer_original'];
        echo "<br>";
    }
    $showed[] = "АНАЛОГ";
}
?>
 

Mr.Arsi

Новичок
PHP:
<?php
$showed = [];
foreach ($related as $related_new) {
    if($related_new['manufacturer_original'] == 'LYNXAUTO') {

        if(!in_array('АНАЛОГ', $showed)) {
            echo "АНАЛОГ";
        }
    
        echo "<br>";
        echo $related_new['manufacturer_original'];
        echo "<br>";
    }
    $showed[] = "АНАЛОГ";
}
?>
Аналог слово не вышло над списком
 
Последнее редактирование:

Mr.Arsi

Новичок
так вроде нашел решение написал в личку Wmix спасибо большое человеческое ему
вот так выводит
PHP:
$showed = false;

foreach ($related as $related_new) {
 if($related_new['manufacturer_original'] == 'LYNXAUTO') {
  if( !$showed ){
   echo "АНАЛОГ";
   echo "<br>";
   $showed = true;
  }
  echo $related_new['manufacturer_original'];
  echo "<br>";
 }
}
 
Сверху