2016-09-06 3 views
-1

다차원 배열을 만들고 싶습니다.하지만 몇 시간 동안 살펴본 후에는 꽤 분실했습니다. 내가 AJAX를 통해 모달에서 ID 및 수량을 보내고, 그리고 내가 그런 식으로 접근하려고이 $_SESSION['cart'] =>array(here should be IDs => and each ID is pointing to its quantity)다차원 배열 PHP에서 값 가져 오기

if(!isset($_SESSION['cart'])){ 
    $_SESSION['cart'] = array(array()); 
} 

if(isset($_REQUEST['id'])){ 
    $_SESSION['cart'][] = $_REQUEST['id']; 
    $_SESSION['cart'][][] = $_REQUEST['quantity']; 
} 

처럼 저장할 :

foreach($_SESSION['cart'] as $value){ 
    //var_dump($value); 
    //echo "<br>"; 
    foreach($value as $item){ 
     var_dump($item); 
     echo "<br>"; 
    } 
} 

을하지만 두 번째 foreach는 내가이 경고를 그것의 인수가 무효라는 것, 나는 $ 값을 배열로 변환하는 것을 우회 할 수있다. 이것이 올바른 방법일까요? 또는 더 나은 무엇입니까? 감사합니다

답변

2

유형 주소 표시 줄에 다음 :

/path/to/your/file.php?id=10&quantity=20 
/path/to/your/file.php?id=11&quantity=30 
/path/to/your/file.php?id=12&quantity=15 
/path/to/your/file.php?id=10&quantity=80 

file.php

session_start(); 

if(!isset($_SESSION['cart'])){ 
$_SESSION['cart']=array(); 
} 


if(isset($_REQUEST['id'])){ 
    foreach ($_SESSION['cart'] as $index => $item) { 
     if ( array_key_exists($_REQUEST['id'],$item) ) { 
      $_SESSION['cart'][$index][$_REQUEST['id']] = $_REQUEST['quantity']; 
      $flag=1; 
      break; 
     }  
    } 
    if ($flag==0) { 
     $_SESSION['cart'][] = array($_REQUEST['id'] => $_REQUEST['quantity']); 
    } 
} 


foreach ($_SESSION['cart'] as $index => $item) { 
    foreach ($item as $id => $quantity) { 
     echo 'id is :'.$id.', quantity is:'.$quantity.'<br>'; 
    } 
} 

결과 :

id is :10, quantity is:80(20 previous) 
id is :11, quantity is:30 
id is :12, quantity is:15 
+0

니스! 거의 완벽하게 작동하지만 항상 이전 값을 덮어 쓰는 점이 다릅니다. – rtom

+0

@rtom 무슨 뜻인가요? 어떤 결과를 얻고 싶습니까? 당신은 더 구체적으로 설명 할 수 있습니다 – kyshel

+0

그럼 장바구니에 수량으로 ID를 보내고 쇼핑 카트에 배열해야합니다. 배열에 저장하려고합니다. 나중에 DB에 삽입 할 수 있지만이 솔루션은 이전 값을 항상 덮어 씁니다 다른 제품을 추가 한 후 – rtom

1

이 줄은 어떻게되어 있나요?

$_SESSION['cart'][][] = $_REQUEST['quantity']; 

당신은 더 나은 써서 :

arraykey =>value를 추가하려면

if(isset($_REQUEST['id'])){ 
    $_SESSION['cart'][$_REQUEST['id']] = $_REQUEST['quantity']; 
} 

설명, 당신은 작성해야 :

array[key] = value 

배열이 여기에 있습니다. $_SESSION['cart']이고 키가 $_REQUEST['id']이고 값이 $_REQUEST['quantity']입니다.

$_SESSION['cart'][$_REQUEST['id']] = $_REQUEST['quantity']; 

또는 단계적으로 ...

$array = $_SESSION['cart']; 
$id = $_REQUEST['id']; 
$value = $_REQUEST['quantity'] ; 

$array[$key] = $value ; 
$_SESSION['cart'] = $array ; 

가 액세스하려면 : 그래서 당신이 작성해야

foreach($_SESSION['cart'] as $key => $value){ 
    echo "For key $key, value is $value" . "<br>" ; 
} 
+0

내가 아무 일 없기 때문에 나는 그것을 작성해야하는 방법 밖에 몰랐다. 나는 이것을 다음과 같이 재 입력하려고 시도했다. 'if (isset ($ _REQUEST [ 'id'])) { \t $ _SESSION [ 'cart'] [] = $ _REQUEST [ 'id']; \t $ _SESSION [ 'cart'] [$ _ 요청 [ 'id']] = $ _REQUEST [ '수량']; }'하지만 작동하지 않습니다 – rtom

+0

@rtom 설명을 추가했습니다. 이해가되지 않는다면 좋은 PHP 책을 사서 PHP 매뉴얼을 읽어 보길 강력히 권합니다. 배열의 페이지는 다음과 같습니다. http://php.net/manual/en/book.array.php –

+0

고마워, 이해하지만 지금은 어떻게 접근해야할지 모르겠다. 나는 C와 함께 일하기 전에 짧은 시간에만 PHP로 작업하고 PHP 배열은 다소 혼란 스럽다. – rtom