0

私は次のphpスクリプトを持っています:

<?php
  session_start();
  global $db;
  $cart = $_SESSION['cart'];
  if ($cart) {
    $items = explode(',',$cart);
    $contents = array();
    foreach ($items as $item) {
      $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
    }

    $output[] = '<form action="cart.php?action=update" method="post" id="cart">';
    $total=0;
    echo 'you have following books';
    echo '</br>';
    $output[] = '<table>';

    foreach ($contents as $id=>$qty) {
      $sql = "SELECT * FROM books WHERE bcode ='$id'";
      $result = $db->query($sql);
      $row = $result->fetch();
      extract($row);
      $output[] = '<tr>';

      $a = $output[] = '<td>  '.$bname.'</td>';
      $output[] = '<td>'.$price.'rs.</td>';
      $output[] = '<td>*'.$qty.'</td>';
      '</br>';
      $output[] = '<td>Rs.'.($price * $qty).'</td>';
      $total += $price * $qty;
      $output[] = '</tr>';
    }

    $output[] = '</table>';
    $output[] = '<p>Grand total: <strong>Rs.'.$total.'</strong></p>';

    $output[] = '</form>';
  } else {
    $output[] = '<p>You shopping cart is empty.</p>';
  }


?>

foreachループの結果を変数に保存する方法はありますか?.ie $ aには本の名前が含まれますが、本が2つある場合、$ aの値は次の本によって上書きされますか?

4

2 に答える 2

2
$a= $output[] = '<td>  '.$bname.'</td>';

$aループのすべての反復で再初期化しています。

あなたがする必要があるのは、関数の最後にそれを設定することです。$output

$a = implode ('\n', $output);

または、出力全体が必要ない場合は、配列として使用します。

$a[] = $output[] = '<td>  '.$bname.'</td>';
于 2012-08-14T18:35:55.380 に答える
1

あなたが求めているのは、キーと値のペアを設定する方法です。

$books = array();
foreach ($items as $item) {
  //get $bookName and $bookInformation

  //Save
  $books[$bookName] = $bookInformation;
}

キーを指定するため$bookName、同じ名前の他のキーは、キー($bookName)を新しい値()で上書きします$bookInformation。phpでは、構成を使用する場合:

$books[] = $bookInformation;

配列$bookInformationの最後に追加するだけです。$books

コードには他にも多くの問題があることに注意してください。$bnameたとえば、が定義されることはなく、出力(echo)とビジネスロジック(本の名前を配列に保存するなど)を混在させています。これらの部分を実際に分離する必要があります。また、何もしない行が少なくとも1つあることに注意してください。

'</br>';
于 2012-08-14T18:40:38.833 に答える