キーの自動付与

広告

配列に新しい要素を追加する場合にはキーと値を指定します。キーには整数か文字列が指定できますがキーを省略することも可能です。キーを省略した場合は例えば次のように記述します。

$var[] = 100;
$var[] = 'Tokyo';

キーが省略された場合は整数のキーが自動で付与されます。付与される整数キーは現在キーとして割り当てられている最大の整数に1を加えたものです。整数のキーが1つも存在しなかった場合は0から付与されます。

先ほどの場合はまず最初の要素のキーとして0が付与され、次の要素は現在存在する最大の整数を持つキーに1を加えた整数となるため1となります。よってprint_r関数で出力すると次のようになります。

Array
(
    [0] => 100
    [1] => Tokyo
)

次の例では整数のキーとして7と12がありますが、最大のキーは12なのでキーが省略された場合には13が付与されます。

$var[12] = 100;
$var['Kudou'] = 72;
$var[7] = 100;
$var[] = 'Tokyo';

実際にprint_r関数で出力すると次のようになります。

Array
(
    [12] => 100
    [Kudou] => 72
    [7] => 100
    [13] => Tokyo
)

文字列のキーが存在していても自動で付与されるキーには何も影響しません。

また整数であっても負の整数のキーしか存在しなかった場合、自動で付与されるキーは0となります。

$var[-3] = 75;
$var[-12] = 45;
$var[] = 28;
$var[] = 83;

実際にprint_r関数で出力すると次のようになります。

Array
(
    [-3] => 75
    [-12] => 45
    [0] => 28
    [1] => 83
)

整数型のキーを連続した数値で順に割り当てる場合には便利です。

サンプルプログラム

では簡単なプログラムで試して見ます。

sample4-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<pre>
<?php
for ($i = 10; $i < 13; $i++){
  $var[] = $i * 100 ;
}
print_r($var);
?>
</pre>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

キーの自動付与

PHP入門の他の記事を見てみる

( Written by Tatsuo Ikura )