PHPの配列操作の概要をまとめ、実際にサンプルコードを作成・動作させて確認しています。
※目次をクリックすると目次の下部にコンテンツが表示されます。
PHPの配列
・PHPの配列は、実際には順番付けられたマップ。
・マップは型の一種で、値をキーに関連付ける。
・PHPの配列には他の配列を値として保持することができる。
・マップは型の一種で、値をキーに関連付ける。
・PHPの配列には他の配列を値として保持することができる。
配列の作成
・array()を使って作成する。
・PHP 5.4 以降では配列の短縮構文が追加され、array()の代わりに[]を使えるようになった。
①マップの形式で作成
・PHP 5.4 以降では配列の短縮構文が追加され、array()の代わりに[]を使えるようになった。
①マップの形式で作成
array( key => value, key2 => value2, key3 => value3, ... )
②数値の添え字で作成
・keyを省略した場合、これまでに使われた整数のキーの中で最大のものに1を加えた値を使う。
$array = array(“foo”, “bar”, “hello”, “world”);
配列操作の例
①ハッシュの配列の操作例
$members1 = array( array("id" => 11, "name" => "相田"), array("id" => 12, "name" => "飯田"), ・・・ ); foreach ($members1 as $member) { print "id: {$member['id']}, name:{$member['name']}\n"; } $length = count($members1); for ($i=0; $i<$length; ++$i){ print "id: {$members1[$i]['id']}, name:{$members1[$i]['name']}\n"; }
②クラスの配列の操作例
class Member1{ public $id; public $name; public function __construct($id,$name) { $this->id = $id; $this->name = $name; } } $members2 = array( new Member1(11, '相田'), new Member1(12, '飯田'), new Member1(13, '上田'), new Member1(14, '江田'), new Member1(15, '小田') ); $length2 = count($members2); for ($i=0; $i<$length2; ++$i){ print "id: {$members2[$i]->id}, name:{$members2[$i]->name}\n"; }
配列に要素を追加
①配列の最後に要素を追加
array_push($members2, new Member1(19, '謙田'));
array_push($members2, array("id" => 190, "name" => "謙田"));
②配列の先頭に要素を追加
array_unshift($members2, new Member1(20, '小林'));
array_unshift($members2, array("id" => 200, "name" => "小林"));
array_push($members2, new Member1(19, '謙田'));
array_push($members2, array("id" => 190, "name" => "謙田"));
②配列の先頭に要素を追加
array_unshift($members2, new Member1(20, '小林'));
array_unshift($members2, array("id" => 200, "name" => "小林"));
指定した範囲の配列の要素をリターン
〇array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
・arrayから引数offsetおよびlengthで指定された連続する要素を返す。
・デフォルトで配列の数値キーを並べなおし、 リセットする。preserve_keys を TRUE にする事でこの動作を変更することができる。
例)
$members3 = array_slice($members2, 1, 7, false);
・arrayから引数offsetおよびlengthで指定された連続する要素を返す。
・デフォルトで配列の数値キーを並べなおし、 リセットする。preserve_keys を TRUE にする事でこの動作を変更することができる。
例)
$members3 = array_slice($members2, 1, 7, false);
配列内の要素をソート
〇bool usort ( array &$array , callable $value_compare_func )
・ユーザー定義の比較関数を使用して、配列を値でソートする。
・比較関数($value_compare_func)は、最初の引数と二番目の引数の比較結果を返す。
最初の引数のほうが二番目の引数より大きい場合は正の数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の数を返す必要がある。
例)Member1クラスのid属性の値で昇順にソート
・ユーザー定義の比較関数を使用して、配列を値でソートする。
・比較関数($value_compare_func)は、最初の引数と二番目の引数の比較結果を返す。
最初の引数のほうが二番目の引数より大きい場合は正の数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の数を返す必要がある。
例)Member1クラスのid属性の値で昇順にソート
function cmp($a, $b){ if ($a->id > $b->id) { return 1; } if ($a->id < $b->id) { return -1; } return 0; } usort($members3, "cmp");