2015-01-16 2 views
0

Я нахожу несколько тем об использовании return для цикла. Но сказать, что все было примерно одинаково. вставьте данные в цикл в массив и затем верните этот массив.Использование Возвращение с цикла

То, что я делаю, имеет цикл цикла, поэтому, возможно, это проблема, но как бы я ни старался, я не могу заставить ее работать.

public function getSolicData() { 
    foreach ($this->solicStringConvert() as $solic){ 
     $success = false; 
     try{ 
      $con = new PDO(DB_HOST, DB_USER, DB_PASS); 
      $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = "SELECT * FROM solic_code WHERE manufacturer = :manufacturer_code AND main_type = :main_type AND option_code = :option_code"; 
      $stmt_solic = $con->prepare($sql); 
      $stmt_solic->bindValue("manufacturer_code", "06", PDO::PARAM_STR); 
      $stmt_solic->bindValue("main_type", "50", PDO::PARAM_STR);    
      $stmt_solic->bindValue("option_code", $solic, PDO::PARAM_STR);  
      $stmt_solic->execute(); 
      $i= 0; 
      while ($row = $stmt_solic->fetch()){ 
       //echo $row['description']; 
       //echo '<li class="list-group-item"><span class="glyphicon glyphicon-ok text-success"></span>TEXT</li>'; 
       //echo '<li class="list-group-item"><span class="glyphicon glyphicon-ok text-success"></span>&nbsp;"'.$row['description'].'"</li>'; 
       echo $row['description']; 
       echo "<br>";     
       $this->values[] = $row['description']; 
       return $this->values;    
      } 
     }catch(PDOExeption $e){ 
      echo $e->getMessage(); 
      echo $con->errorInfo(); 
     } 

    } 
} 

Код выглядит логичным для меня, к сожалению, его выход является пустым массивом. Другая часть кода должна быть хорошей, потому что, если я использую echo вместо return, я получаю хороший выходной цикл. Также, если я заменил «return» на var_dump() все данные есть.

Есть ли шанс, что кто-то может мне помочь?

ответ

0

Я предлагаю переместить return $this->values; в конце методы, потому что, когда столкнулся с return оператора возвращает текущее значение $this->values и больше ничего от этого метода выполняются после этого.

1

возврат выходов getSolicData функция, поэтому вы делаете только одну итерацию своей петли.

Просто поместите оператор возврата в конце:

public function getSolicData() { 
    $tempArray = $this->solicStringConvert(); 
    foreach ($tempArray as $key => $solic){ 
     $success = false; 
     try{ 
      $con = new PDO(DB_HOST, DB_USER, DB_PASS); 
      $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = "SELECT * FROM solic_code WHERE manufacturer = :manufacturer_code AND main_type = :main_type AND option_code = :option_code"; 
      $stmt_solic = $con->prepare($sql); 
      $stmt_solic->bindValue("manufacturer_code", "06", PDO::PARAM_STR); 
      $stmt_solic->bindValue("main_type", "50", PDO::PARAM_STR); 
      $stmt_solic->bindValue("option_code", $tempArray[$key], PDO::PARAM_STR); 
      $stmt_solic->execute(); 
      $i= 0; 
      while ($row = $stmt_solic->fetch()){ 
       //echo $row['description']; 
       //echo '<li class="list-group-item"><span class="glyphicon glyphicon-ok text-success"></span>TEXT</li>'; 
       //echo '<li class="list-group-item"><span class="glyphicon glyphicon-ok text-success"></span>&nbsp;"'.$row['description'].'"</li>'; 
       echo $row['description']; 
       echo "<br>"; 
       $this->values[] = $row['description']; 
       // NOT HERE 
      } 
     }catch(PDOExeption $e){ 
      echo $e->getMessage(); 
      echo $con->errorInfo(); 
     } 

    } 
    return $this->values; //AT THE END 
} 

Кроме того, bindValue принимает ссылку, так что вы не можете использовать temporay переменным, созданные в цикле Еогеаспа (он получает перезаписан каждую итерацию, поэтому ее конечное значение будет использоваться для всех запросов), вместо этого передайте действительный элемент массива

+0

Эй, я попробую, он возвращает мне просто «массив», но если я var_dump, он возвращает все ... – Andurit

+0

Вы поймали мое редактирование? – Steve

+0

О, неважно, я копирую код mate .... echo return variabiles, но не возвращаю :( Я просто пытаюсь удалить echo и добавил var_dump перед возвратом: array (17) {[0] => string (12) «2-DVÉŘOVÝ» [1] => строка (20) «STŘEŠNÍ OKNO MECH» [2] => строка (23) «TÓNOVANÁ SKLA ZELENÁ» [3] => строка (20) «VNĚ-ZRCÁTKA NASTAV» [4 ] => string (22) «BEZ ČERVENÉ OZD-LIŠ» [5] => строка (20) «REGUL SKLONU SVĚTEL» [6] => строка (13) «POTAHY LÁTKA» [7] => строка (18) «SEDADLO L V-NASTAV» [8] => строка (22) «ČALOUN PŘÍSTR-DESKY» [9] => строка (14) «1,8 L 66KW RP» [10] => строка (17) «PŘEVOD 4 + E-RYCHL "[11] => string (14) .. – Andurit

Смежные вопросы