[PHP-users 15623]Re: unset()の挙動

sumi @ orihime.net sumi @ orihime.net
2003年 6月 2日 (月) 18:13:08 JST


SUMiです。

> こんにちは。アットシステム進藤です。

こんにちは。

> 細かく読んでいないのですが
> PHPの配列はハッシュテーブルで、インデックスが連番とは限らない。
> つまり
> $stack[1]
> $stack[10]
> sizeof($stack) == 2
> です。
> この辺りは関係しないでしょうか。
> 
> >      unset( $stack[sizeof( $stack ) - 1] );  // 挙動不審

そのあたりの不整合がでないように、
  $stack = Array();
とし、
  $stack[] = $org[$i];
と
  unset( $stack[sizeof( $stack ) - 1] );  // 挙動不審
で、必ず配列の最後の要素を扱うようにしたのですが…

と、書いているところに枡形さんからも。


> こんにちわ、桝形です。
こんにちは。

> 結果:
> ---------------------------------------------------------------------
> 1:a	:a
> 2:c	:a/c
> 3:d	:a/c/d
> Array
> (
>     [0] => a
>     [1] => c
>     [2] => d
> )
> [2][1]Array
> (
>     [0] => a
>     [1] => c
> )
> 2:..	:a/c
> Array
> (
>     [0] => a
>     [1] => c
> )
> [1][0]Array
> (
>     [0] => a
> )
> 1:..	:a
> 2:e	:a/e
> Array
> (
>     [0] => a
>     [3] => e
> )
> [1][1]Array
> (
>     [0] => a
>     [3] => e
> )
> 2:..	:a/e
> 3:f	:a/e/f
> 4:g	:a/e/f/g
> a/e/f/g
> ---------------------------------------------------------------------

この結果を見る限り、$array[]で配列に要素を追加する場合、unsetで削除した
配列番号は「存在するもの」として追加されているようですね。

$array[]形式での要素の追加の場合、最終項目として追加されると誤解していま
した。

どうも、お騒がせしました。



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