我有一个foreach代码,它应该从数组中获取所有值,我在foreach循环之外调用return,但即使如此,我仍然只获取第一个值。
这是我使用的方法:
public function getPriceItem($orderNumber){
try {
$query = "SELECT * FROM `orderlist` WHERE `orderNumber` = :orderNumber";
$stmt = $this->dbh->prepare($query);
$stmt->bindParam(":orderNumber", $orderNumber);
$stmt->execute();
$result = $stmt->fetchAll();
$i = 0;
$res = '';
foreach ($result as $item) {
$product_arr = explode (",", $item['productName']);
// $price_arr = explode (",", $item['productPrice']);
$qty_arr = explode (",", $item['qty']);
$res .= '<tr><td>'.$product_arr[$i].'(aantal'.$qty_arr[$i].')</td></tr>';
$i++;
}
return $res;
} catch (Exception $e) {
$this->error = $e->getMessage();
}
}
如有任何帮助,我们将不胜感激。
您不需要遍历在foreach中创建的乘积和数量数组,还需要遍历它们:
foreach ($result as $item) {
$product_arr = explode (",", $item['productName']);
$qty_arr = explode (",", $item['qty']);
foreach($product_arr as $k => $product) {
$res .= '<tr><td>'.$product.'(aantal'.$qty_arr[$k].')</td></tr>';
}
}
在我看来不需要$i
这是假设你在乘积数组和数量数组中有同样多的值。请提供$result的输出和您想要的输出!
我想你想要所有与订单号相关的产品及其数量。然后,您需要在foreach循环中再使用一个for循环。用下面给出的代码修改您的代码:
public function getPriceItem($orderNumber){
try {
$query = "SELECT * FROM `orderlist` WHERE `orderNumber` = :orderNumber";
$stmt = $this->dbh->prepare($query);
$stmt->bindParam(":orderNumber", $orderNumber);
$stmt->execute();
$result = $stmt->fetchAll();
$res = '';
foreach ($result as $item) {
$product_arr = explode (",", $item['productName']);
// $price_arr = explode (",", $item['productPrice']);
$qty_arr = explode (",", $item['qty']);
for($i=0;$i<count($product_arr) && i< count($qty_arr);i++)
$res .= '<tr><td>'.$product_arr[$i].'(aantal'.$qty_arr[$i].')</td></tr>';
}
return $res;
} catch (Exception $e) {
$this->error = $e->getMessage();
}
}