2017-10-02 3 views
4
include('session.php'); 

$productname = $_GET['productname']; 
$productcode = $_GET['productcode'];  

$wishlist = array("$productname" => $productcode);  

$_SESSION["wishlist"] = $wishlist; 

print_r($_SESSION["wishlist"]); 

이 코드는 "wishlist"라는 세션에 대한 배열로 설정됩니다.
문제는 세션이 대체되고 있다는 것입니다. 이미 존재하는 경우 배열에 추가하고 싶습니다.세션에 저장하는 연관 배열에 값을 추가하는 방법은 무엇입니까?

그래서 배열을 새 데이터로 업데이트 할 수 있습니까? 나는 다음을 시도했다.

$productname = $_GET['productname']; 
$productcode = $_GET['productcode']; 
$lastsession = $_SESSION["wishlist"]; 

// CHECK IF SESSION IS EMPTY OR NOT 
if(empty($lastsession)) { 
    $wishlist = array("$productname" => $productcode); 
} else { 
    /* 
     How Can I Update array ???  
    */ 
} 

배열 출력은 이와 유사합니다. 숫자와 연관된 인덱스가 아니기 때문에 연관됩니다. 그리고 하나의 배열에 결과를 원한다. 배열로 배열되지 않습니다.

[mobile] => iphone_2 

감사합니다.

답변

3

즉, (내가 제대로 질문을 이해한다면) 당신은이 작업을 수행 할 수 있습니다

$productname = $_GET['productname']; 
$productcode = $_GET['productcode']; 
$lastsession = $_SESSION["wishlist"]; 

// CHECK IF SESSION IS EMPTY OR NOT 
if(empty($lastsession)) { 
    $wishlist = array("$productname" => $productcode); 
} else { 
    array_push($wishlist, array("$productname" => $productcode)); 
} 

array_push는 배열의 마지막에 정보를 추가하는 기능입니다. 이 예에서는 현재의 위시리스트에 제품 배열을 추가하는 데 사용하고 있습니다.

// create a blank array if the session variable is not created 
// array_push requires an array to be passed as the first parameter 
$wishlist = isset($_SESSION["wishlist"]) ? $_SESSION["wishlist"] : array(); 
//$wishlist = $_SESSION["wishlist"] ?? array(); // this is for PHP 7+ 
array_push($wishlist, array("$productname" => $productcode)); 

// you can then access each product as: 
$wishlist["mobile"]; 

을 또는 다음으로 위의 코드에서 5 호선을 대체 :

또 다른 간단한 해결책이 될 것

$wishlist[$productname] = $productcode; 

이 라인으로 빈 배열을 생성에서 당신을 절약 할 수 3.
array_push의 장점은 다음과 같이 한 번에 여러 제품을 추가 할 수 있다는 것입니다.

$products = [$productname1 => $productcode1, $productname2 => $productcode2]; 
array_push($wishlist, $products); 

알아 두어야 할 점은 $lastsession으로 세션을 설정하고 $wishlist을 사용한다는 것입니다. 중복 변수를 존재하지 않는 것으로 유지하십시오.

+0

은 내가 세션에서 많은 값을 어떻게 저장하는 경우? upto 10+ mb – TarangP

+0

[이 링크] (https://stackoverflow.com/a/4649934/3578036)가 질문에 대한 답변을 제공합니까? 세션의 기본 최대 크기는 128MB – JustCarty

+0

array_push ($ wishlist, array ("$ productname"=> $ productcode))입니다. 이 배열에 새 배열을 만듭니다. 난 단지 배열이 아니라 값을 추가하고 싶어 그래서 어떤 솔루션을 가지고 있습니까? – TarangP

0

세션의 위시리스트 데이터를 변수로 설정 한 다음이 변수에 새 제품을 추가하기 만하면됩니다. 그 후 세션의 위시리스트 데이터를 업데이트하십시오.

$productname = $_GET['productname']; 
$productcode = $_GET['productcode']; 

// do the same as: $wishlist = !empty($_SESSION["wishlist"]) ? $_SESSION["wishlist"] : []; 
$wishlist = $_SESSION["wishlist"] ?? []; 

$wishlist[$productname] = $productcode; 
$_SESSION["wishlist"] = $wishlist; 

print_r($_SESSION["wishlist"]); 
+0

$ wishlist = ""[wishlist "] [??] 조금만 설명해 주시겠습니까? – TarangP

+1

새로운 PHP7 기능'Null coalescing operator' (http://php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op) – Neodan

0
$_SESSION["wishlist"] = array('product1' => 'product1 Name'); 
// Initial products in session 

$temp_session = $_SESSION["wishlist"]; 
//store products in wishlist in temp variable 

$temp_session['mobile'] = 'iphone_2'; 
// Add new product to temp variable 

$_SESSION["wishlist"] = $temp_session; 
//Update session 

print_r($_SESSION["wishlist"]); 
+0

데이터가 클 때 긴 프로세스라고 생각하지 않습니다. . – TarangP

+0

예, 도전적으로 최적화하지는 않지만 어떻게 h e는 세션 배열을 갱신 할 수있다 – shashi

+0

'$ _SESSION [ "wishlist"] [ "mobile"] = "iphone_2"; 그것은 효과적으로 당신이하는 일이지만 여러 단계로 진행된다. 결국 $ _SESSION은 다차원 배열입니다. – JustCarty

관련 문제