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

菊澤 正明 kikuzawa @ cyber-coo.com
2009年 11月 25日 (水) 00:37:51 JST


菊澤と申します。

別解ですが、array_values()関数を使えば、foreach(){〜}を
1行で済ますことができます。

大城さんのソースを変更させてもらって、
$_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']);

unset($_SESSION['cart'][2]);
$_SESSION['cart'] = array_values($_SESSION['cart']);

print_r($_SESSION['cart']);

というような感じです。

On Wed, 25 Nov 2009 00:08:37 +0900
Tetsuo Oki <ooki @ anseilen.org> wrote:

> 大城です
> 
>  次のようにしてみたら、添字を振り直したリストが得られました。
>  お試しください。
> 
>  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 mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3

--------------------------------------------
菊澤 正明  mailto:kikuzawa @ cyber-coo.com



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