我找到了关于在一个周期中使用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> "'.$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 :(得分:1)
返回退出getSolicData
函数,所以你只进行一次循环迭代。
只需将return语句放在最后:
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> "'.$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
接受引用,因此您不能使用在foreach循环中创建的临时变量(它会在每次迭代时被覆盖,因此它的最终值将用于所有查询),而是传递实际数组元件
答案 1 :(得分:0)
我建议在方法结束时移动return $this->values;
,因为当遇到return
语句时,它会返回$this->values
的当前值,并且该方法不再执行之后。