サンプル集  >  PHP  >  動的配列と連想配列(foreach)
動的配列と連想配列(foreach)
2009/03/27

動的配列の例です。

◆環境
OS Windows XP Professional Version 2002 Service Pack 2
PHP 5.2.4

引数$argvの内容を全て配列に格納するようにします。 格納する配列はサイズを指定せず$ar[]としています。

arrayTest.php
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
<?php
for ( $i = 0; $i < count( $argv ); $i = $i + 1 )
{
    $ar[] = $argv[$i];
}

for ( $i = 0; $i < count( $ar ); $i = $i + 1 )
{
    echo $i.":[".$argv[$i]."]\n";
}
?>

◆実行結果
>php arrayTest.php
0:[arrayTest.php]

>php arrayTest.php 1 2 3
0:[arrayTest.php]
1:[1]
2:[2]
3:[3]

すごい簡単ですね。

いきなり、添え字付き変数を表示したらどうなるのでしょうか?

arrayTest2.php
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
<?php
echo count( $buf ).":[".$buf[3]."]\n";
$buf[3] = "scary php!!";
echo count( $buf ).":[".$buf[3]."]\n";
for ( $i = 0; $i < count( $buf ); $i = $i + 1 )
{
    echo $i.":[".$buf[$i]."]\n";
}
?>

◆実行結果
>php arrayTest2.php
0:[]
1:[scary php!!]
0:[]

不思議な結果が出ました。

まず、いきなり $buf[3] を表示したときは、配列サイズは 0 で中身も空。 $buf[3] に値を導入した後は、配列サイズが 1 で $buf[3] にはちゃんと値が入ってる。 配列の要素を全て表示しようとして、for 文で配列サイズ分表示しようとすると、$buf[0] を表示するため、値が空。 予想だと、いきなり $buf[3] に値をセットした場合、配列サイズは 4 になると思ったのですが、実際は 1 でした。

添え字は 3 だけど、実際には 3 番目に入っているのではなく、連想配列と同じ扱いなのでしょうか?

連想配列の内容を表示するコードを追加して再度試してみます。

arrayTest3.php
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
<?php
echo count( $buf ).":[".$buf[3]."]\n";
$buf[3] = "scary php!!";
echo count( $buf ).":[".$buf[3]."]\n";
for ( $i = 0; $i < count( $buf ); $i = $i + 1 )
{
    echo $i.":[".$buf[$i]."]\n";
}

foreach ( $buf as $buf_key => $buf_value )
{
    echo "key=[".$buf_key."] value=[".$buf_value."]\n";
}
?>

◆実行結果
>php arrayTest3.php
0:[]
1:[scary php!!]
0:[]
key=[3] value=[scary php!!]

表示されました。 連想配列扱いになってるようですね。

▲ PageTop  ■ Home


Copyright (C) 2012 ymlib.com