[PHP-users 1018] Re: 配列から要素を取り除くには

Osamu Shigematsu php-users@php.gr.jp
Thu, 02 Aug 2001 10:22:42 +0900


重松です。こんにちは。

> | このとき、単純に削除したい要素の index で unset() していないのは何か意図があ
> | るのでしょうか?
> 
> 間を正しく埋め、配列の添え字に欠番ができないように
> するために、最後の要素を unset しています。
> 
> unset($arr[$elem]);
> 
> とすると、count($arr) の値は小さくなってますが、
> 間があいています。削除した後に
> 
> for($i=0; $i<count($arr); $i++){
> print $arr[$i] . "\n";
> }
> 
> というプログラムを付け加え、両方の unset を試すと
> 意味がわかるとおもいます。

解説ありがとうございます。

前々から疑問だったのですが、PHP の array では、添え字というよりもキーなんで
すよね? そのため、たとえば、今回のようにある要素を削ったとしても、キーは単に
そのキーの値が削られるだけで、後ろが自動的に詰まるわけではない、ということで
すよね?

だとすると、

<?php

$a = array("a"=>"A","b"=>"B");

print "\$a[0] => " . $a[0];

?>

のように、配列 $a の最初の要素を表示したいと思ってもできない、ということにな
りますね。

便利なんだか不便なんだかよくわからないですが、理解を深めることができたように
思います。

-- 
Osamu Shigematsu

http://www.ravi.ne.jp/
mailto:shige@ravi.ne.jp