2015-11-27 5 views
1

Мне нужна ваша помощь, потому что я перед необычной проблемой: В моем коде у меня есть первая функция, в которой я выполняю запрос с PDO, который возвращает массив с результатом переменную, называемую «результат». Когда я делаю var_dump() на этой переменной, он показывает мне:моя переменная имеет 2 типа

array(4) { ["id_offre_var"]=> string(4) "7061" ["id_offre"]=> string(4) "3216" ["prix"]=> string(5) "29.90" ["prix_public"]=> string(5) "69.00" } 

Итак, у меня есть массив, это нормально.

Затем я вызываю функцию под названием hydrate(), в которой я помещаю свою переменную «результат». Но, в этой функции, когда я делаю var_dump() по этому показателю (моя предыдущая переменная «результат»), он показывает мне, что:

array(4) { ["id_offre_var"]=> string(4) "7061" ["id_offre"]=> string(4) "3216" ["prix"]=> string(5) "29.90" ["prix_public"]=> string(5) "69.00" } bool(false) 

Моя переменная теперь массив и булево! Очевидно, это вызывает у меня проблему для следующего.

Моя первая функция:

public function getVarianteForNewsletter($idOffre) 
{ 
    $sql = "SELECT id_offre_var, id_offre, prix, prix_public FROM apm_offres_variante 
      WHERE id_offre = :offre 
      ORDER BY prix 
      LIMIT 0,1"; 
    $stmt = $this->_dal->prepare($sql); 
    $stmt->bindValue(":offre", $idOffre, PDO::PARAM_INT); 
    $stmt->execute(); 
    $result = $stmt->fetch(PDO::FETCH_ASSOC); 
    var_dump($result); 
    $Object = new OffreVariante(); 
    $this->hydrate($Object, $result); 
    return $Object; 
} 

Тогда моя функция гидрат():

protected function hydrate($Object, $params) 
{ 
    var_dump($params); 
    foreach ($params as $key=>$param) 
    { 
     $var = array_search($key, $this->_varsColsName); 
     if ($var != false) 
     { 
      //if $var is a foreign key to another object 
      if (array_key_exists($var, $this->_foreignKeys)) 
      { 
       $fk = $this->_foreignKeys[$var]; 
       $daoName = "DAO".ucfirst($fk); 
       $dao = new $daoName($this->_dal); 
       $param = $dao->getById($param); 
      } 

      $setter = "set".ucfirst($var); 
      $Object->$setter($param); 
     } 
    } 
} 
+1

Bonjour Monsieur Guillaume. Было бы полезно, если вы поделитесь соответствующим кодом с вашим 1-м методом и методом 'hydrate()'. – NSNoob

+1

Возможно, вы видите два разных «var_dump» – Amarnasan

+0

. Я добавил код :) –

ответ

1

Наконец, проблема вызвана $ ключ => $ пункт в Еогеасп(). Если я этого не работает:

foreach ($params as $key=>$param) 

Но если я только так это работает:

foreach ($params as $param) 

Я не знаю, почему, но я собираюсь попробовать использовать простой FOR вместо этого. Спасибо за помощь.

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