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

kona uto-s @ ymail.plala.or.jp
2009年 11月 25日 (水) 23:49:17 JST


大城さん,martinさん,菊澤さん

お世話になります。konaです。

大城さんよりアドバイス頂いたforeach文を使った方法と
martinさんと菊澤さんよりアドバイス頂いたarray_values()関数を
使った方法とで両方を試し、どちらも期待通りの結果を得る事が
出来ました。

ありがとうございました。


----- Original Message ----- 
From: "菊澤 正明" <kikuzawa @ cyber-coo.com>
To: "PHP-users ML" <php-users @ php.gr.jp>
Sent: Wednesday, November 25, 2009 12:37 AM
Subject: [PHP-users 34853] Re: 添え字の再付与について


>
> 菊澤と申します。
>
> 別解ですが、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 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
> 




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