我需要你的帮助,因为我面临着一个不寻常的问题: 在我的代码中,我有一个第一个函数,我在其中使用PDO处理请求,该函数返回一个数组,其结果在一个名为“result”的变量中。 当我对这个变量执行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" }
所以,我有一个数组,没关系。
然后,我调用一个名为 hydrate()的函数,其中我将变量“result”放入其中。但是,在这个函数中,当我对这个参数(我以前的变量“result”)执行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)
我的变量现在是一个数组AND布尔值! 显然,这给我带来了下一个问题。
我的第一个功能:
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);
}
}
}
答案 0 :(得分:1)
最后,问题是由foreach()中的$ key => $ item引起的。如果我有这个它不起作用:
foreach ($params as $key=>$param)
但如果我这样做的话:
foreach ($params as $param)
我不知道为什么,但我打算尝试使用简单的FOR循环。 谢谢你的帮助。