2012-04-26 4 views
0

루핑 할 때 바스켓 배열에있는 항목을 출력하는 각 루프에 대해 가지고 있습니다. 이것은 훌륭하게 작동하지만 세션 변수에 각 항목 당 몇 가지를 저장하여이 정보를 다른 곳에서 사용할 수 있으므로 foreach 루프에서 세션 변수를 만들려고합니다. 물론 변수마다 매번 다른 이름을 사용해야합니다. 다른 항목을 반복합니다. 나는 변수를 동적으로 만드는 방법을 연구했다. 알아낼 수 없었다. 이것은 내가 항상 편리하게 느낄 수있는 것이지만, 어려울 것 같아서 그냥 피하는 것이지만 지금은 가능한지 알고 싶습니다.PHP에서 변수를 만들고 각 루프마다 값을 할당하는 방법은 무엇입니까?

이 그래서 이런 식으로 뭔가를 할 수
foreach ($basketarray as $value) 
{ 
    echo "<div id='basketitems'><br/>          
    ".$value['name']."<br/> 
    ".$value['id']."<br/> 
    &pound;".$value['price']."<br/> 
    ".$value['size']."<br/> 
    Quantity: ".$value['quantity']."<br/><br/> 
    <img id='searchimage' src=".$value['picture']." width='210' height='250' /><br/>"; 

    $_SESSION['Bprodid'] = $value['id']; 
    $_SESSION['Bprodquantity'] = $value['quantity']; 
    $_SESSION['Bprodprice'] = $value['price']; 

echo "<form action='deletefrombasket.php' name='basketdelete$items' id='basketdelete$items' method='POST'> 

    <input type='submit' name='".$value['basketid']."' value='Remove' id='basketid' name='basketid'/> 

    </form></div>"; 

$items++; 
} 
?> 
    <div id='basketdetails'> 
<?php 

echo "<p>items ". number_format($basketitems)."</p>"; 
echo "<p>Total &pound; ".number_format($baskettotal, 2, '.', ',')."</p>"; 


if($basketitems && $baskettotal !=0) 
{ 
    echo "<a href='clear.php'>Empty Basket</a>"; 
    echo "<a href='checkout.php'>Checkout</a>"; 
} 

: 여기

내 각 루프 코드, 당신은 내가 바구니에 각 항목에 대해 만들려는 세 개의 세션 변수 내부를 볼 수있다? 카운터를 사용하여 이름을 만들려고했지만 실패했습니다.

나는 모든 조언을 부탁드립니다.

감사합니다.

답변

2

세션 변수는 다차원 배열 할 수있다 루프에서 :

$_SESSION['my_values'][$value['id']]['Bprodquantity'] = $value['quantity']; 
$_SESSION['my_values'][$value['id']]['price'] = $value['price']; 
// etc. 

편집 :의 모든 값을 반복하는 방법을 사용할 수 있습니다

foreach ($_SESSION['my_values'] as $key => $values) 
{ 
    echo $key; // the ID of your product 
    echo $values['quantity']; // the quantity 
    echo $values['price']; // the price 
} 
+0

귀하의 의견을 보내 주셔서 감사합니다. 귀하의 솔루션을 테스트하고 있지만, 하나 이상의 값을 보유하려면 어떻게해야합니까? 이 $ _SESSION [ 'my_values'] [$ value [ 'id']] [ '가격'] = $ 값 [ '가격']; 루프 내에서 echo $ _SESSION [ 'my_values'] [$ value [ 'id']] [ 'price']를 사용하여 echo합니다. 내 바구니에는 테스트를위한 3 가지 항목이 있으며 저장해야하는 세 가지 가격이 있습니다.이 유일한 에코는 마지막 가격입니다. 당신의 솔루션을 올바르게 사용하는 방법이 궁금합니다. 많은 감사합니다. – deucalion0

+1

@ deucalion0 트릭은'[$ value [ 'id']]'; '$ _SESSION [ 'my_values']'에는 ID를 통해 직접 액세스 할 수있는 3 개의 값이 있거나'$ _SESSION [ 'my_values']'배열에서'foreach '를 사용하여 루프 할 수 있습니다. 당신이 반복하는 모든 항목은'quantity'와'price' (또는 당신이 무엇을 더하든) 키를 가진 배열입니다. 내 대답을 편집 할게. – jeroen

+0

많은 감사드립니다. 지금 당장이 문제를 해결해 드리겠습니다 !!!!! – deucalion0

3

값을 배열에 넣습니다. 그런 다음 sender에 대한 각 루프마다 증가하는 카운터를 각 값의 키로 사용하십시오.

$counter = 0; 
foreach ($basketarray as $value) 
{ 
    // Code goes here 

    $_SESSION['Bprodid'][$counter] = $value['id']; 
    $_SESSION['Bprodquantity'][$counter] = $value['quantity']; 
    $_SESSION['Bprodprice']$counter[] = $value['price']; 

    // More code 
    $counter++ 
} 

루프에 대한 각 값에 사용 A를 액세스하려면 :

$_SESSION['my_values'] = array(); 

를 실행 한 다음, 루프 전에 당신이 말할 수 있도록

$size = count($_SESSION['Bprodid']); 
for ($i = 0; $i < $size; $i++) 
{ 
    echo $_SESSION['Bprodid'][$i] . "<br>\n"; 
    echo $_SESSION['Bprodquantity'][$i] . "<br>\n"; 
    echo $_SESSION['Bprodprice'][$i] . "<br><br>\n"; 
} 
+0

감사합니다 몇 시간은 당신의 예제를 시도하지만 작동하지 않습니다. 다른 스크립트에 저장된 세션 변수를 사용하려면 어떻게해야합니까? 일반적으로 변수와 스크립트에 사용되는 변수를 설정할 수 있습니다. 그래도 같은 방식으로 작동해야합니까? 감사합니다. – deucalion0

+0

같은 방식으로 작동해야합니다. 새로운 세션 변수를 반복하려면'for 루프 '를 사용하십시오. 예를 들어 업데이트 된 답변을 참조하십시오. –

+0

업데이트 된 코드를 보내 주셔서 감사합니다. 나는 $ _SESSION [ 'Bprodid'] [$ counter]를 출력하고 13, 이는 바구니에있는 두 항목의 id 1과 3을 표시합니다. 그러나 $ size를 echo하면 값이 1이라고 나옵니다 왜냐하면 내가 for 루프를 실행했을 때 id1이라는 id가 1 인 echo 11만이 id1이고 quantity가 1이기 때문이다.나는 그것을 잘못 사용하고 있을지도 모릅니다, 나는 계속 노력하고 있습니다, 고마워요! – deucalion0

1

스토어 당신은 배열 $products[$items]["prodId"] 등으로 값과 루프 후 배열, $_SESSION["products"] = $products에 세션 변수를 설정하십시오. 그런 다음 $_SESSION["products"][$itemNumber]["prodId"] 등으로 항목에 액세스 할 수 있습니다.

1
당신은 세션에서 전체 배열을 저장하는 직렬화()와 때 unserialize() 함수를 사용할 수

:

$_SESSION['sbasketarray'] = serialize($basketarray); 

및 데이터를 필요로 다른 스크립트 : 나는 보냈다 도와

if (isset ($_SESSION['sbasketarray'])) { 
    $basketarray = unserialize ($_SESSION['sbasketarray']); 
} 
관련 문제