PHPの配列操作の概要

PHPの配列操作の概要をまとめ、実際にサンプルコードを作成・動作させて確認しています。

※目次をクリックすると目次の下部にコンテンツが表示されます。

PHPの配列
・PHPの配列は、実際には順番付けられたマップ。
・マップは型の一種で、値をキーに関連付ける。
・PHPの配列には他の配列を値として保持することができる。

配列の作成
・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 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);

配列内の要素をソート
〇bool usort ( array &$array , callable $value_compare_func )
 
・ユーザー定義の比較関数を使用して、配列を値でソートする。
・比較関数($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");

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です