Как передать специальное значение для первого элемента в цикле foreach laravel в CONTROLLER - PullRequest
1 голос
/ 12 октября 2019

Я просто пытаюсь передать специальное значение для моего массива в CONTROLLER, где это значение будет действовать только для первого элемента в цикле foreach. Я знаю, как реализовать это ввиду ($loop ->first). Но это не может быть использовано внутри контроллера.

У меня есть таблица с ценами, где эта таблица содержит как $, так и £. Итак, все, что я делаю, - все значения в таблице будут проходить через цикл foreach, и в настоящее время я добавляю еще несколько элементов в массив с некоторыми условиями if. Пожалуйста, обратитесь ниже код.

$sortAccordingToPrice =  [];
foreach($listings as $dbValues){

    if(($dbValues['ref'] == ConstatntE::E['id'] )  ) {

        $newPrice = array(

            'converted_price' => $dbValues["price"] * Session::get('LRK') , 
            'id' => $dbValues["id"],
            'seller_logo' => $dbValues['APT']["RFL"],
            'ref' => $dbValues['ref'],

        );

        array_push($sortAccordingToPrice , $newPrice);

    }else{

        $newPrice = array(

            'converted_price' => $dbValues['APT']["price"],
            'id' => $dbValues["id"] ,
            'seller_logo' => $dbValues['APT']["RFL"],
            'ref' => $dbValues['ref']
          );
        array_push($sortAccordingToPrice , $newPrice);
    }
}

Так что я хочу сделать, это добавить 'isLowest' => TRUE только для первого элемента обоих условий if. Означает, что если первый оператор if равен true, тогда 'isLowest' => TRUE будет добавлен в массив в первый раз, а когда второй параметр if станет истинным, 'isLowest' => TRUE также будет включен в массив.

Обратите вниманиеЯ не спрашиваю в .blade.php Я хочу сделать это в Контроллере

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Тип: 1 Вы можете использовать array_key_first

foreach($listings as $key => $dbValues){
    if ($key === array_key_first($listings)){
    echo 'FIRST ELEMENT!';
    }  
}

Тип: 2 Вы также можете использовать ключ.

foreach($listings as $key => $dbValues){
    if ($key === 0){
    echo 'FIRST ELEMENT!';
    }  
}

Тип: 3 В первый раз, когда вы получите истину, тогда это будет ложью.

$first = true; 
foreach ($listings as $key => $value)
{
  if ( $first )
  {
    // do something
    $first = false; //in order not to get into the if statement for the next loops
  }
  else
  {
    // do something else for all loops except the first
  }
}
1 голос
/ 12 октября 2019

Используйте другой синтаксис для цикла foreach

foreach($listings as $idx => $dbValues){

, тогда внутри цикла вы можете кодировать

    if( $idx == 0 ) {
        // the first time round the foreach loop
        // do whatever is required only on the frst time round the loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...