2016-10-05 7 views
1

私は多次元配列を持っています。私はFORループでループスルーし、値を返してデータベースに入力できます。 問題は、ユーザーがunsetを使用して$ _SESSION [cart]配列から取り出した項目を削除したときに発生します。それは、カートにライン2だった場合具体的に私は、forループで使用する値は、それらのギャップを持っているので、今、私はもはやFORループを使用することができますPHPが多次元配列から価値を得る

unset($_SESSION[cart][2]); 

を使用しないだろう。

元の配列は次のようになります

カート(それは、これは一例であり、任意の行であってもよい)から2行目を削除した後

$_SESSION['cart'][1] $_SESSION['cart'][2] $_SESSION['cart'][3]

$_SESSION['cart'][1] $_SESSION['cart'][3]

これは配列の構造です:

$_SESSION['cart'][$lineId] = array('stockNumber' => $stockNumber, 'description' => $description, 'masterPrice' => $masterPrice); 

$ lineId私は現在、このループを使用して、カートからデータを取得カート

に行項目です:

for ($i = 1, $howMany = count($_SESSION['cart']); $i < $howMany+1;) { 
$stk_code = $_SESSION['cart'][$i]["stockNumber"]; 
$description = $_SESSION['cart'][$i]["description"]; 
$unitPrice = $_SESSION['cart'][$i]["masterPrice"];} 

私はこれを理解する上で助けとループへの道を必要とします行番号に関係なく配列を介して私はカートに入れるアイテムの数や取り出し方法を知る方法がありません。どんな助けもありがとう。

+2

'foreach'のための代わりのforeachを使用することができます。 $ _SESSION ['cart']配列をarray_values($ _ SESSION ['cart'])に設定しておけば削除した後に – bishop

+0

を削除した後、配列を再度索引付けします。 –

答えて

1

あなたはループ

おそらく
$_SESSION['cart'][1] = array('stockNumber' => 1, 'description' => 'test', 'masterPrice' => 115); 

    foreach ($_SESSION['cart'] as $value) { 
     $stk_code = $value["stockNumber"]; 
     $description = $value["description"]; 
     $unitPrice = $value["masterPrice"]; 
    } 
+0

これが機能しない場合は、 –

+0

それは完全に動作します、私は行番号にハングアップし、私は各行の制御を持っていたことを確認し、本質的に私はしますが、それは問題ではありません。これを実行し、var_dumpを使ってFORループと比較した後、メモ帳の出力を実際に見てみると、ループがどのようにデータを参照するのかを理解しています。 - たぶん私は最初にそれをしていたはずです、ありがとう – user1946891