[PHP-users 34851] Re: 添え字の再付与について

Tetsuo Oki ooki @ anseilen.org
2009年 11月 25日 (水) 00:08:37 JST


大城です

 次のようにしてみたら、添字を振り直したリストが得られました。
 お試しください。

 kona さんの書いている処理の

    $temp['cart'] = $_SESSION['cart'];

がうまく動かない原因ではないかと思います。
 このリストコピーの後で、$temp をダンプさせてみると分かりやすいと思いま
す。

-----------------------------
#!/usr/local/bin/php
<?php
$_SESSION['cart'] = array (
                           array ( 'id'=>5, 'kazu'=>1, 'date'=>'201003'),
                           array ( 'id'=>2, 'kazu'=>2, 'date'=>'201004'),
                           array ( 'id'=>3, 'kazu'=>3, 'date'=>'201005'),
                           array ( 'id'=>3, 'kazu'=>5, 'date'=>'201004'),
                           );

print_r($_SESSION['cart']);
$temp = $_SESSION['cart'];

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

foreach ( $temp as $val ) {
  $_SESSION['cart'][] = $val;
}
print_r($_SESSION['cart']);
?>
-----------------------------


> こんにちは。konaと申します。
> 
> SESSION変数の添え字を初期化して0から再付与したいのですが
> うまくいかないので困っています。
> 何か良い方法がありましたらアドバイス頂けますと助かります。
> 
> 具体的には、ショッピングカートでSESSIONを使った際、
> SESSION変数を出力すると下記の様になります。
> 
> print_r($_SESSION['cart']);
>  ↓
>  Array (
>   [0] => Array ( [id] => 5 [kazu] => 1 [date] => 201003 )
>   [1] => Array ( [id] => 2 [kazu] => 2 [date] => 201004 )
>   [2] => Array ( [id] => 3 [kazu] => 3 [date] => 201005 )
>   [3] => Array ( [id] => 3 [kazu] => 5 [date] => 201004 )
>  )
> 
> 例えば添え字の[2]をunset等で削除した場合、下記の様になりますが...
> 
>  Array (
>   [0] => Array ( [id] => 5 [kazu] => 1 [date] => 201003 )
>   [1] => Array ( [id] => 2 [kazu] => 2 [date] => 201004 )
>   [3] => Array ( [id] => 3 [kazu] => 5 [date] => 201004 )
>  )
> 
> これを再度添え字の[0]から連番で振り直したいのです。
> 
>  Array (
>   [0] => Array ( [id] => 5 [kazu] => 1 [date] => 201003 )
>   [1] => Array ( [id] => 2 [kazu] => 2 [date] => 201004 )
>   [2] => Array ( [id] => 3 [kazu] => 5 [date] => 201004 )
>  )
> 
> 下記の通り一旦配列に格納して$_SESSIONを初期化した上で
> 再度SESSIONに再格納しているのですが、状況は変わりません。
> 
>  $TEMP['cart'] = $_SESSION['cart'];
>  unset($_SESSION['cart']);
>  foreach($_TEMP['cart'] as $val) {
>      $_SESSION['cart'][] = $val;
>  }
> 
> よろしくお願い致します。
> 

-------------------------------------------------------
Tetsuo Ooki <ooki @ anseilen.org>




PHP-users メーリングリストの案内