配列関数

関数一覧
array() /  array_chunk() /  array_keys() /  array_merge() /  array_pad() /  array_pop() /  array_push() /  array_reverse() /  array_search() /  array_shift() /  array_unshift() /  array_values() /  arsort() /  asort() /  count() /  each() /  end() /  in_array() /  krsort() /  ksort() /  list() /  natsort() /  next() /  prev() /  reset() /  rsort() /  sort()
機能一覧
配列を生成する /  ポインタが指す要素とキーを得る /  配列カーソル(ポインタ)の移動 /  複数の変数に値を代入する /  配列の要素数を得る /  配列を分割する /  配列のキー・要素を得る /  配列に配列を追加する /  配列の要素数を指定した数に埋める /  配列の要素を逆順にする /  配列に特定の値があるか調べる /  配列の要素を追加・削除する /  配列をソート(並べ替え)する

配列を生成する

array()
array array([mixed...])
配列を生成するための関数のようでいて言語構造です。
之に関する詳しい事は「PHPの基本」の「配列」のページをご覧下さい。

PageTop


ポインタが指す要素とキーを得る

each()関数
mixed each(array 配列)
「配列」内の、配列カーソル(ポインタ)が指す要素とそのキーを配列で返し、ポインタを次の要素へ移動する関数です。
返される配列は、「1」、「value」、「0」、「key」という4つのキーを持ち、「1」、「value」に要素を、「0」、「key」にキー名を格納しています。
「配列カーソル(ポインタ)」は、“配列内の処理対象(要素)を指すもの”です。
ポインタが最後の要素に移動した場合、次以降は「FALSE」を返します。「reset()」関数でポインタを先頭に戻すなりしない限り、ポインタはどっかに行っちゃったままの状態です。

以下にサンプル。

<pre>
<?php
    $animal_arr = array("dog", "hode" => "cat", "cow");
    
    while($arr = each($animal_arr))
        print_r($arr);
    
    if(each($animal_arr) === false)
        echo "END...<br />";
    
    reset($animal_arr);  //ポインタを先頭に戻す
    
    if($arr = each($animal_arr))
        print_r($arr);
    
    /*出力結果
    Array
    (
        [1] => dog
        [value] => dog
        [0] => 0
        [key] => 0
    )
    Array
    (
        [1] => cat
        [value] => cat
        [0] => hode
        [key] => hode
    )
    Array
    (
        [1] => cow
        [value] => cow
        [0] => 1
        [key] => 1
    )
    END...
    Array
    (
        [1] => dog
        [value] => dog
        [0] => 0
        [key] => 0
    )
    */
?>
</pre>

PageTop


配列カーソル(ポインタ)の移動

まず、「配列カーソル(ポインタ)」は、“配列内の処理対象(要素)を指すもの”です。

next()関数
mixed next(array 配列)
「配列」のポインタを次の要素へ移動し、移動した先の要素を返します。
それ以上移動できない場合は、「FALSE」を返します。
prev()関数
mixed prev(array 配列)
「配列」のポインタを前の要素へ移動し、移動した先の要素を返します。
それ以上移動できない場合は、「FALSE」を返します。
end()関数
mixed end(array 配列)
「配列」のポインタを最後の要素へ移動し、移動した先の要素を返します。
reset()関数
mixed reset(array 配列)
「配列」のポインタを先頭の要素へ移動し、移動した先の要素を返します。

以下にサンプル。

<pre>
<?php
    $animal_arr = array("dog", "hode" => "cat", "cow");
    
    echo next($animal_arr)."<br />";
    
    echo prev($animal_arr)."<br />";
    
    echo end($animal_arr)."<br />";
    
    echo reset($animal_arr);
    
    /*出力結果
    cat
    dog
    cow
    dog
    */
?>
</pre>

PageTop


複数の変数に値を代入する

list()
void list(mixed...)
複数の変数に値を代入するための関数のようでいて言語構造です。
この関数(のようなもの)に配列を代入しようとすると、引数に指定したそれぞれの変数に配列の要素が順に代入されます。
引数に指定した変数の数と配列の要素数が異なると、変数の数の方が多い場合は残りの変数には何も代入されず、配列の要素数の方が多い場合は残りの要素は代入されません。
また、引数に変数を指定せず、「,(コンマ)」のみで区切って記述した場合は、指定しなかった所は代入されず(代入先の変数が無いので宙に浮く)、変数を指定した所にのみ代入されます。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "cat", "cow", "frog", "pig");
    
    list($arr1[] , $arr1[] , $arr1[] , $arr1[] )                  = $arr;
    list($arr2[] , $arr2[] , $arr2[] , $arr2[], $arr2[], $arr2[]) = $arr;
    list($arr3[0], $arr3[1], $arr3[2], $arr3[3])                  = $arr;
    list($arr4[] , $arr4[] , $arr4[6], $arr4[] )                  = $arr;
    list(        , $arr5[] ,         , $arr5[],        )          = $arr;
    
    $i = 0;
    list($arr6[$i++], $arr6[$i++], $arr6[$i++], $arr6[$i++])      = $arr;
    
    print_r($arr1);
    print_r($arr2);
    print_r($arr3);
    print_r($arr4);
    print_r($arr5);
    print_r($arr6);
    
    /*出力結果
    Array
    (
        [0] => frog
        [1] => cow
        [2] => cat
        [3] => dog
    )
    Array
    (
        [0] => 
        [1] => pig
        [2] => frog
        [3] => cow
        [4] => cat
        [5] => dog
    )
    Array
    (
        [3] => frog
        [2] => cow
        [1] => cat
        [0] => dog
    )
    Array
    (
        [0] => frog
        [6] => cow
        [7] => cat
        [8] => dog
    )
    Array
    (
        [0] => frog
        [1] => cat
    )
    Array
    (
        [3] => frog
        [2] => cow
        [1] => cat
        [0] => dog
    )
    */
?>
</pre>

上記サンプルの結果を見る限り、まず代入元の配列の要素数と「list()」に指定した変数の数を調べた後、「list()」に指定された後ろの変数から順に代入して行ってる様です。

PageTop


配列の要素数を得る

count()関数
int count(mixed 変数)
「変数」が持つ要素数を返す関数です。
通常「変数」に指定するものは配列ですが、それ以外のものも指定出来ます。しかし、配列以外でない普通の変数は値を1つしか持たないので常に「1」を返すことになり無意味です。

以下にサンプル。

<?php
    $arr = array("dog", "cat", "cow", "frog", "crab");
    
    echo count($arr);
    
    /*出力結果
    5
    */
?>

PageTop


配列を分割する

array_chunk()関数
array array_chunk(array 配列, int サイズ[, bool キーの維持])
「配列」を要素数がそれぞれ「サイズ」個持つ配列に分割し、分割された配列を持つ多次元配列を生成して返す関数です。
最後の配列は「サイズ」よりも少ない要素数になる可能性があります。
「キーの維持」には真偽値を指定出来ます。「TRUE」を指定すると、元の配列のキー(添え字)を維持し、分割されたそれぞれの配列の要素のキーは、分割前のキーがそのまま付きます。「FALSE」を指定すると、元の配列でのキーは維持されずに、「0」から始まるキーが割り振られます。デフォルト値は「FALSE」です。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "cat", "cow", "frog", "crab");
    
    print_r( array_chunk($arr, 2) );
    print_r( array_chunk($arr, 2, TRUE) );
    
    /*出力結果
    Array
    (
        [0] => Array
            (
                [0] => dog
                [1] => cat
            )
    
        [1] => Array
            (
                [0] => cow
                [1] => frog
            )
    
        [2] => Array
            (
                [0] => crab
            )
    
    )
    Array
    (
        [0] => Array
            (
                [0] => dog
                [1] => cat
            )
    
        [1] => Array
            (
                [2] => cow
                [3] => frog
            )
    
        [2] => Array
            (
                [4] => crab
            )
    
    )
    */
?>
</pre>

PageTop


配列のキー・要素を得る

array_keys()関数
array array_keys(array 配列[, mixed 対象要素])
「配列」内のキー(添え字)を要素に持つ配列を生成して返す関数です。
「対象要素」を指定すると、その要素に一致するキーのみを要素に含む配列を生成します。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => 100, "b" => 150, "c" => 170, "d" => 150);
    
    print_r( array_keys($arr) );
    print_r( array_keys($arr, 150) );
    
    /*出力結果
    Array
    (
        [0] => a
        [1] => b
        [2] => c
        [3] => d
    )
    Array
    (
        [0] => b
        [1] => d
    )
    */
?>
</pre>

PageTop


array_values()関数
array array_values(array 配列)
“「配列」内の要素”を要素に持つ配列を生成して返す関数です。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => 100, "b" => 150, "c" => 170, "d" => 150);
    
    print_r( array_values($arr) );
    
    /*出力結果
    Array
    (
        [0] => 100
        [1] => 150
        [2] => 170
        [3] => 150
    )
    */
?>
</pre>

PageTop


配列に配列を追加する

array_merge()関数
array array_merge(array 配列1, array 配列2[, array 配列3...])
前の「配列」の後ろに「配列」を追加していって出来た配列を返す関数です。
文字列のキーは維持されますが、キーが整数の場合は保持されず、「0」から始まる連番になります。
(文字列の)キーが一致する場合は、追加する方の配列の値が上書きされていきます。

以下にサンプル。

<pre>
<?php
    $arr1 = array(12 => 100, "a" => 100, 100);
    $arr2 = array("c" => 200, "a" => 200, 30 => 200, 200);
    $arr3 = array(300, "a" => 300, "b" => 300, 300);
    
    print_r( array_merge($arr1, $arr2, $arr3) );
    
    /*出力結果
    Array
    (
        [0] => 100
        [a] => 300
        [1] => 100
        [c] => 200
        [2] => 200
        [3] => 200
        [4] => 300
        [b] => 300
        [5] => 300
    )
    */
?>
</pre>

整数のキーは完全に無視され、登場した順に「0」から始まる連番をキーに持つ形で追加されています。また、重複する文字列のキーの場合は上書きされ、後に登場したものが最終的な値になっています。

PageTop


配列の要素数を指定した数に埋める

array_pad()関数
array array_pad(array 配列, int 要素数, mixed 埋め込む値)
「配列」の要素数が指定した「要素数」より少ない場合に、「配列」に「埋め込む値」を要素として追加していって出来た配列を返す関数です。
「要素数」が正の整数の場合は「埋め込む値」を配列の右側に埋めていき、負の整数の場合は配列の左側に埋めていきます。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "cat", "cow");
    
    print_r( array_pad($arr, 1, " - ") );
    print_r( array_pad($arr, 5, " - ") );
    print_r( array_pad($arr, -5, " - ") );
    
    /*出力結果
    Array
    (
        [0] => dog
        [1] => cat
        [2] => cow
    )
    Array
    (
        [0] => dog
        [1] => cat
        [2] => cow
        [3] =>  - 
        [4] =>  - 
    )
    Array
    (
        [0] =>  - 
        [1] =>  - 
        [2] => dog
        [3] => cat
        [4] => cow
    )
    */
?>
</pre>

PageTop


配列の要素を逆順にする

array_reverse()関数
array array_reverse(array 配列[, bool キーの保持])
「配列」の要素の順番を逆にした配列を返す関数です。
「キーの保持」に「TRUE」を指定すると、生成される配列の要素のキーは、元の「配列」の時のキーが保持された状態で生成されます。デフォルト値は「FALSE」です。キーが文字列の場合は常に保持されます。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => "dog", 5 => "cat", "cow");
    
    print_r( array_reverse($arr) );
    print_r( array_reverse($arr, TRUE) );
    
    /*出力結果
    Array
    (
        [0] => cow
        [1] => cat
        [a] => dog
    )
    Array
    (
        [6] => cow
        [5] => cat
        [a] => dog
    )
    */
?>
</pre>

PageTop


配列に特定の値があるか調べる

in_array()関数
bool in_array(mixed 要素, array 配列[, bool 厳格])
「配列」内に、指定した「要素」があれば「TRUE」を、無ければ「FALSE」を返す関数です。
「要素」が文字列の場合は大文字と小文字を区別します。
「厳格」に「TRUE」を指定すると、要素の型まで厳格に比較します。デフォルト値は「FALSE」です。

以下にサンプル。

<?php
    $arr = array("dog", "cat", "cow", 6, "10");
    
    if( in_array("6", $arr) )
        echo '"6" is exists';
    else
        echo '"6" is not exists';
    
    echo "<br />";
    
    if( in_array("6", $arr, TRUE) )
        echo '"6" is exists';
    else
        echo '"6" is not exists';
    
    /*出力結果
    "6" is exists
    "6" is not exists
    */
?>

PageTop


array_search()関数
mixed array_search(mixed 要素, array 配列[, bool 厳格])
「配列」内に、指定した「要素」があればその要素に対応するキーを、存在しなければ「FALSE」を返す関数です。
「要素」が文字列の場合は大文字と小文字を区別します。
「厳格」に「TRUE」を指定すると、要素の型まで厳格に比較します。デフォルト値は「FALSE」です。

以下にサンプル。

<?php
    $arr = array("dog", "cat", "cow", 6, "10");
    
    echo array_search("cow", $arr);
    
    /*出力結果
    2
    */
?>

PageTop


配列の要素を追加・削除する

array_push()関数
int array_push(array 配列, mixed 変数[, mixed ...])
「配列」の後尾に1つ以上の要素を追加し、追加後の要素数を返す関数です。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => "dog", 5 => "cat", "cow");
    
    echo array_push($arr, "frog", "crab"), "\n";
    print_r($arr);
    
    /*出力結果
    5
    Array
    (
        [a] => dog
        [5] => cat
        [6] => cow
        [7] => frog
        [8] => crab
    )
    */
?>
</pre>

PageTop


array_unshift()関数
int array_unshift(array 配列, mixed 変数[, mixed ...])
「配列」の先頭に1つ以上の要素を追加し、追加後の要素数を返す関数です。
キーが整数値だった場合、追加後のキーは「0」から始まる連番になります。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => "dog", 5 => "cat", "cow");
    
    echo array_unshift($arr, "frog", "crab"), "\n";
    print_r($arr);
    
    /*出力結果
    5
    Array
    (
        [0] => frog
        [1] => crab
        [a] => dog
        [2] => cat
        [3] => cow
    )
    */
?>
</pre>

PageTop


array_pop()関数
mixed array_pop(array 配列)
「配列」の最後の要素を削除し、その削除された要素を返す関数です。
「配列」が空もしくは配列ではない場合は「NULL」を返します。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => "dog", 5 => "cat", "cow");
    
    echo array_pop($arr), "\n";
    print_r($arr);
    
    /*出力結果
    cow
    Array
    (
        [a] => dog
        [5] => cat
    )
    */
?>
</pre>

PageTop


array_shift()関数
mixed array_shift(array 配列)
「配列」の先頭の要素を削除し、その削除された要素を返す関数です。
「配列」が空もしくは配列ではない場合は「NULL」を返します。
キーが整数値だった場合、処理後のキーは「0」から始まる連番になります。

以下にサンプル。

<pre>
<?php
    $arr = array("a" => "dog", 5 => "cat", "cow");
    
    echo array_shift($arr), "\n";
    print_r($arr);
    
    /*出力結果
    dog
    Array
    (
        [0] => cat
        [1] => cow
    )
    */
?>
</pre>

PageTop


配列をソート(並べ替え)する

sort()関数
void sort(array 配列[, int ソートフラグ])
「配列」の要素をソートする関数です。
「ソートフラグ」には、次の3つの定数が指定出来ます。

SORT_REGULAR」(通常通りに比較する)、
SORT_NUMERIC」(数値的に比較する)、
SORT_STRING」(文字列として比較する)

デフォルト値は「SORT_REGULAR」です。
ソート前のキーは一切保持されず、ソート後の配列のキーは「0」から始まる連番になります。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "cat", "a" => "cow", "frog", "crab");
    
    sort($arr);
    print_r($arr);
    
    $arr = array(2, 0, 10, "01", 100, "001", 1, 0.1);

    sort($arr, SORT_NUMERIC);
    print_r($arr);
    
    sort($arr, SORT_STRING);
    print_r($arr);
    
    /*出力結果
    Array
    (
        [0] => cat
        [1] => cow
        [2] => crab
        [3] => dog
        [4] => frog
    )
    Array
    (
        [0] => 0
        [1] => 0.1
        [2] => 1
        [3] => 001
        [4] => 01
        [5] => 2
        [6] => 10
        [7] => 100
    )
    Array
    (
        [0] => 0
        [1] => 0.1
        [2] => 001
        [3] => 01
        [4] => 1
        [5] => 10
        [6] => 100
        [7] => 2
    )
    */
?>
</pre>

PageTop


rsort()関数
void rsort(array 配列[, int ソートフラグ])
「配列」の要素を逆順にソートする関数です。
逆順にソートする以外「sort()」関数と同じです。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "cat", "a" => "cow", "frog", "crab");
    
    rsort($arr);
    print_r($arr);
    
    $arr = array(2, 0, 10, "01", 100, "001", 1, 0.1);

    rsort($arr, SORT_NUMERIC);
    print_r($arr);
    
    rsort($arr, SORT_STRING);
    print_r($arr);
    
    /*出力結果
    Array
    (
        [0] => frog
        [1] => dog
        [2] => crab
        [3] => cow
        [4] => cat
    )
    Array
    (
        [0] => 100
        [1] => 10
        [2] => 2
        [3] => 1
        [4] => 001
        [5] => 01
        [6] => 0.1
        [7] => 0
    )
    Array
    (
        [0] => 2
        [1] => 100
        [2] => 10
        [3] => 1
        [4] => 01
        [5] => 001
        [6] => 0.1
        [7] => 0
    )
    */
?>
</pre>

PageTop


ksort()関数
void ksort(array 配列[, int ソートフラグ])
「配列」をキーでソートする関数です。
キーでソートする以外「sort()」関数と同じです。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "b" => "cat", 6 => "cow",
                                      "a" => "frog", "crab");
    
    ksort($arr);
    print_r($arr);

    ksort($arr, SORT_NUMERIC);
    print_r($arr);
    
    ksort($arr, SORT_STRING);
    print_r($arr);
    
    /*出力結果
    Array
    (
        [a] => frog
        [0] => dog
        [b] => cat
        [6] => cow
        [7] => crab
    )
    Array
    (
        [a] => frog
        [b] => cat
        [0] => dog
        [6] => cow
        [7] => crab
    )
    Array
    (
        [0] => dog
        [6] => cow
        [7] => crab
        [a] => frog
        [b] => cat
    )
    */
?>
</pre>

PageTop


krsort()関数
void krsort(array 配列[, int ソートフラグ])
「配列」をキーで逆順にソートする関数です。
逆順にソートする以外「ksort()」関数と同じです。

以下にサンプル。

<pre>
<?php
    $arr = array("dog", "b" => "cat", 6 => "cow",
                                      "a" => "frog", "crab");
    
    krsort($arr);
    print_r($arr);

    krsort($arr, SORT_NUMERIC);
    print_r($arr);
    
    krsort($arr, SORT_STRING);
    print_r($arr);
    
    /*出力結果
    Array
    (
        [7] => crab
        [6] => cow
        [b] => cat
        [a] => frog
        [0] => dog
    )
    Array
    (
        [7] => crab
        [6] => cow
        [0] => dog
        [b] => cat
        [a] => frog
    )
    Array
    (
        [b] => cat
        [a] => frog
        [7] => crab
        [6] => cow
        [0] => dog
    )
    */
?>
</pre>

PageTop


asort()関数
void asort(array 配列[, int ソートフラグ])
キーと要素の関係を維持しつつ、「配列」の要素をソートする関数です。
キーを維持する事以外「sort()」関数と同じです。

以下にサンプル。

<pre>
<?php
    $arr1 = $arr2 = array("dog", "b" => "cat", 6 => "cow",
                                      "a" => "frog", "crab");
    
    sort($arr1);
    print_r($arr1);

    asort($arr2);
    print_r($arr2);
    
    /*出力結果
    Array
    (
        [0] => cat
        [1] => cow
        [2] => crab
        [3] => dog
        [4] => frog
    )
    Array
    (
        [b] => cat
        [6] => cow
        [7] => crab
        [0] => dog
        [a] => frog
    )
    */
?>
</pre>

PageTop


arsort()関数
void arsort(array 配列[, int ソートフラグ])
キーと要素の関係を維持しつつ、「配列」の要素を逆順にソートする関数です。
逆順にソートする以外「asort()」関数と同じです。

以下にサンプル。

<pre>
<?php
    $arr1 = $arr2 = array("dog", "b" => "cat", 6 => "cow",
                                      "a" => "frog", "crab");
    
    rsort($arr1);
    print_r($arr1);

    arsort($arr2);
    print_r($arr2);
    
    /*出力結果
    Array
    (
        [0] => frog
        [1] => dog
        [2] => crab
        [3] => cow
        [4] => cat
    )
    Array
    (
        [a] => frog
        [0] => dog
        [7] => crab
        [6] => cow
        [b] => cat
    )
    */
?>
</pre>

PageTop


natsort()関数
void natsort(array 配列)
自然順(人間が想定する順番)アルゴリズムで、「配列」の要素をソートする関数です。
キーは維持されます。

以下にサンプル。

<pre>
<?php
    $arr1 = $arr2 = array( "hode10.php", "hode2.php", "hode0.php",
                           "hode100.php", "hode1.php", "hode11" );
    
    sort($arr1);
    print_r($arr1);
    
    natsort($arr2);
    print_r($arr2);
    
    /*出力結果
    Array
    (
        [0] => hode0.php
        [1] => hode1.php
        [2] => hode10.php
        [3] => hode100.php
        [4] => hode11
        [5] => hode2.php
    )
    Array
    (
        [2] => hode0.php
        [4] => hode1.php
        [1] => hode2.php
        [0] => hode10.php
        [5] => hode11
        [3] => hode100.php
    )
    */
?>
</pre>

PageTop


作成日:2004年06月13日 最終更新日:2004年08月03日
【通常モード で表示】