사용자가 제목, 가격, 수량 등을 기준으로 상점에서 책을 선택할 수있는 간단한 쇼핑 애플리케이션을 수행하고 있습니다. 현재 책의 모든 세부 사항은 다음과 같은 연관 배열에 보관됩니다.
$menu = array(
array ('id' => '1', 'catagory' => 'newbooks','title' => 'Alex','price' => 4.95, 'desc' => 'bbbb'),
array('id' => '2','catagory' => 'newbooks','title' => 'David ','price' => 5.95, 'desc' => 'sss'),);
}
내가 달성하려는 것은 책 ID의 중복 항목을 병합하거나 제거하는 것입니다. 또한 각 책 제목은 'title', 'id', 'price'를 포함하는 단일 행에 인쇄됩니다.
예를 들면 :
Alex qty:2 price 4.95
David qty:2 price 5.95
등등...그리고 이것은 내 장바구니 파일입니다.
$buy = array();
$qty = 0;
$total = 0;
foreach ($_SESSION['buy'] as $id) {
foreach ($menu as $book ) {
if ($book['id'] == $id) {
$buy[] = $book;
$total += $book['price'];
}
}
}
}
if (count($buy) > 0)
if (count($book) > 0)
{
echo"<table>";
echo"<tr><th>Item Description</th><th>Quantity</th><th>Price</th></tr>";
foreach ($buy as $book){
$f_price = sprintf("%0.2f", $book["price"]);
echo"<tr><td>" .$book["title"] ."</td>";
echo"<td>" .$qty."</td><";
echo"<td>" .$f_price."</td></tr>";
}
echo"<tr><td>Total</td><td>".$total."</td></tr>";
echo"</table>";
}
나는이 문제를 해결하는 데 오랜 시간을 보냈기 때문에 도움이나 조언에 매우 감사 할 것입니다. 문 foreach 루프에 대해 고유 한 기능을 사용하려고 시도했지만 헛되이 아직 초보자이기도합니다. 약간 관용하십시오. 건배!
테스트되지 않았지만 이것은 원하는 수량을 얻기 위해 array_count_values 를 사용하여 원하는 작업을 수행 하고 스크립트를보다 효율적이고 쉽게 관리 할 수 있도록 몇 가지 변경 사항을 변경해야합니다.
<?php
//the ids of the items the user wants to buy
$ids=$_SESSION['buy'];
//Your database of items
$menu = array(
array ('id' => '1', 'catagory' => 'newbooks','title' => 'Alex','price' => 4.95, 'desc' => 'bbbb'),
array('id' => '2','catagory' => 'newbooks','title' => 'David ','price' => 5.95, 'desc' => 'sss')
);
//Create a reverse look-up for the database
$lookUp=array();
foreach($menu as $i=>$v)$lookUp[$v['id']]=$menu[$i];
//populate the cart with items, their quantities, and a total
$cart = array();
$total = 0;
foreach (array_count_values($ids) as $id=>$quantity)
{
if (!array_key_exists($id, $lookUp))continue;
$item=$lookUp[$id];
$itemTotal=$item['price']*$quantity;
$total+=$itemTotal;
$cart[]=array_merge($item,array('quantity'=>$quantity,'itemTotal'=>$itemTotal));
}
if(count($cart) > 0)
{
echo '<table>';
echo '<tr><th>Item Description</th><th>Quantity</th><th>Price</th><th>Item Total</th></tr>';
foreach ($cart as $item)
{
echo sprintf('<tr><td>%s</td><td>%s</td><td>%0.2f</td><td>%0.2f</td></tr>',
$item["title"],$item['quantity'],$item['price'],$item['itemTotal']);
}
echo '<tr><td colspan="3" style="text-align:center;">Total</td><td>'.$total.'</td></tr>';
echo '</table>';
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다