2015-12-29 3 views
0

У меня есть код foreach, который должен получить все значения из массива, я вызываю return вне цикла foreach, но даже при этом я все еще получаю только первое значение.Foreach возвращает только 1-е значение

Вот метод я использую:

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(); 
    } 
} 

Любая помощь будет оценена.

+0

Есть ли запрос, возвращающий более одного результата? – Cristik

+0

Я не понимаю, на каком языке этот, но, возможно, вам нужно написать $ item в $ result вместо 'as' –

+0

Каково значение выборки для $ item ['productName']? –

ответ

2

Вы не проходной продукт и кол-во массивах создаваемых в Еогеаспе, вам нужно пройти их, а также:

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>'; 
    } 
} 

в $ я не нужен, на моем взгляде

И который предполагает, что у вас столько значений в массиве продуктов, и в массиве qty. Пожалуйста, укажите результат вашего результата и вашего желаемого результата!

+0

Благодарим за помощь! Это решило мою проблему. – danny1998

0

Я думаю, что вы хотите, чтобы все продукты и их количество были связаны с номером заказа. Затем вам нужно использовать еще один цикл for внутри цикла foreach. Измените код с помощью кода, приведенного ниже:

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(); 
    } 
} 
Смежные вопросы