配列の要素を数える。
要素の数 = count(配列[,COUNT_RECURSIVE])
int count ( mixed $var [, int $mode = COUNT_NORMAL ] )
例;
<?php header("Content-type: text/html; charset=utf-8"); $a = array(10,20,30); $b[3] = 4; $b[20] = 6; $b[54] = 1; echo count($a); echo count($b); ?>
33
<?php header("Content-type: text/html; charset=utf-8"); $c = array("動物"=>array("ネコ","イヌ","ゾウ"),"植物"=>array("ひまわり","たんぽぽ")); echo count($c); //すべての要素数を数える echo count($c, COUNT_RECURSIVE); ?>
27
配列に要素を追加。
先頭に追加後の要素数 = array_unshift(追加元配列,追加する要素[,追加する要素]);
int array_unshift ( array &$array , mixed $var [, mixed $... ] )
最後に追加後の要素数 = array_push(追加元配列,追加する要素[,追加する要素]);
int array_push ( array &$array , mixed $var [, mixed $... ] )
例:
<?php header("Content-type: text/html; charset=utf-8"); $animal = array("ネコ","イヌ","ゾウ"); $kensu = array_unshift($animal, "キツネ", "ライオン"); $kensu = array_push($animal, "ウサギ", "キリン"); foreach($animal as $value){ echo $value; } //要素の総数 echo $kensu; ?>
キツネライオンネコイヌゾウウサギキリン7
array_push($animal, "ウサギ", "キリン")は
$animal[] = "ウサギ";
$animal[] = "キリン";
と同じ動作をします。もし、配列に複数の要素を追加しない場合、$変数[]の方がより速く処理されます。
配列の要素を削除する。
先頭から要素を削除
削除した要素 = array_shift(削除元配列);
mixed array_shift ( array &$array )
最後から要素を削除
削除した要素 = array_pop(削除元配列);
mixed array_pop ( array &$array )
配列の要素を追加するarray_unshift()関数、配列の前から要素を削除するarray_shift()関数を使うと、要素の添え字はリセットされ、先頭から[0][1]...となります。連想配列の場合はキーには変化はありません。
例:
<?php header("Content-type: text/html; charset=utf-8"); $animal = array("キツネ","ライオン","ネコ","イヌ","ゾウ","ウサギ","キリン"); $del_data = array_shift($animal); foreach($animal as $value){ echo $value; } echo "({$del_data})<br>"; $del_data = array_pop($animal); foreach($animal as $value){ echo $value; } echo "({$del_data})"; ?>
ライオンネコイヌゾウウサギキリン(キツネ)
ライオンネコイヌゾウウサギ(キリン)
配列の並べ替え
論理値(TRUE/FALSE) = sort(配列[,ソート方法]); 論理値(TRUE/FALSE) = rsort(配列[,ソート方法]); 論理値(TRUE/FALSE) = ksort(配列[,ソート方法]); 論理値(TRUE/FALSE) = krsort(配列[,ソート方法]); 論理値(TRUE/FALSE) = asort(配列[,ソート方法]); 論理値(TRUE/FALSE) = arsort(配列[,ソート方法]);
ソートの種類
関数 | 内容 |
sort | 添字配列の値を昇順にソートします(ソート後、添え字は新しく割り当てられます) |
rsort | 添字配列の値を降順にソートします(ソート後、添え字は新しく割り当てられます) |
ksort | 連想配列のキーを昇順にソートします(ソート後、キーと値の関係は維持されます) |
krsort | 連想配列のキーを降順にソートします(ソート後、キーと値の関係は維持されます) |
asort | 連想配列の値を昇順にソートします(ソート後、キーと値の関係は維持されます) |
arsort | 連想配列の値を降順にソートします(ソート後、キーと値の関係は維持されます) |
ソート方法
オプション定数 | 内容 |
SORT_REGULAR | 標準的比較(型は変更なし)をしてソート |
SORT_NUMERIC | 数値として比較してソート |
SORT_STRING | 文字列として比較してソート |
SORT_LOCALE_STRING | システムロケールに基づき比較してソート(PHP4.4.0,PHP5.0.2より追加) |
ロケールとは国や地域によって異なる言語や記号、単位、日付、通貨などの表記方法のことです。
<?php header("Content-type: text/html; charset=utf-8"); $animal = array("キツネ","ライオン","ネコ","イヌ","ゾウ","ウサギ","キリン"); sort($animal); foreach($animal as $value){ echo $value; } echo "<br>"; rsort($animal); foreach($animal as $value){ echo $value; } echo "<br>"; ?>
イヌウサギキツネキリンゾウネコライオン
ライオンネコゾウキリンキツネウサギイヌ
<?php header("Content-type: text/html; charset=utf-8"); $suji = array("1","2","5","10","10"); sort($suji); foreach($suji as $value){ echo $value; } echo "<br>"; rsort($suji); foreach($suji as $value){ echo $value; } echo "<br>"; ?>
1251010
1010521
<?php header("Content-type: text/html; charset=utf-8"); $suji = array("1","2","5","10","10"); //文字列として並べ替え sort($suji,SORT_STRING); foreach($suji as $value){ echo $value; } echo "<br>"; //文字列として並べ替え rsort($suji,SORT_STRING); foreach($suji as $value){ echo $value; } echo "<br>"; ?>
1101025
5210101
<?php header("Content-type: text/html; charset=utf-8"); $cart = array("100円"=>2,"2000円"=>5,"280円"=>13,"70円"=>41); //キーが添字にリセットされる sort($cart,SORT_NUMERIC); foreach($cart as $key => $value){ echo "({$key}:{$value})"; } ?>
(0:2)(1:5)(2:13)(3:41)
<?php header("Content-type: text/html; charset=utf-8"); $cart = array("100円"=>2,"2000円"=>5,"280円"=>13,"70円"=>41); asort($cart,SORT_NUMERIC); foreach($cart as $key => $value){ echo "({$key}:{$value})"; } echo "<br>"; arsort($cart,SORT_NUMERIC); foreach($cart as $key => $value){ echo "({$key}:{$value})"; } echo "<br>"; ksort($cart,SORT_NUMERIC); foreach($cart as $key => $value){ echo "({$key}:{$value})"; } echo "<br>"; krsort($cart,SORT_NUMERIC); foreach($cart as $key => $value){ echo "({$key}:{$value})"; } echo "<br>"; ?>
(100円:2)(2000円:5)(280円:13)(70円:41) (70円:41)(280円:13)(2000円:5)(100円:2) (70円:41)(100円:2)(280円:13)(2000円:5) (2000円:5)(280円:13)(100円:2)(70円:41)
配列を変数に1度に代入
list(変数1,変数2[,変数3...]) = 配列
array list ( mixed $varname [, mixed $... ] )
例;
<?php header("Content-type: text/html; charset=utf-8"); $cart = array("苺ケーキ",350,3); list($shohin,$kakaku,$kosu) = $cart; echo $shohin . "<br>"; echo $kakaku . "<br>"; echo $kosu . "<br>"; ?>
苺ケーキ
350
3>
<?php header("Content-type: text/html; charset=utf-8"); $cart = array("a"=>"苺ケーキ","b"=>350,"c"=>3); //連想配列の値を取得 list($shohin,$kakaku,$kosu) = array_values($cart); echo $shohin . "<br>"; echo $kakaku . "<br>"; echo $kosu . "<br>"; //連想配列のキーを取得 list($shohin,$kakaku,$kosu) = array_keys($cart); echo $shohin . "<br>"; echo $kakaku . "<br>"; echo $kosu . "<br>"; ?>
苺ケーキ
350
3
a
b
c
配列を検索する
検索した添字(キー) = array_search(検索する値,検索する配列[,型チェック]);
例;
<?php header("Content-type: text/html; charset=utf-8"); $color = array("赤","青","黄","緑"); $green_key = array_search("緑",$color); echo $green_key; ?>
3
<?php header("Content-type: text/html; charset=utf-8"); $color = array("red"=>"赤","blue"=>"青","yellow"=>"黄","green"=>"緑"); $green_key = array_search("緑",$color); echo $green_key; ?>
green
<?php header("Content-type: text/html; charset=utf-8"); $color = array("red"=>"赤","blue"=>"青","yellow"=>"黄","green"=>"緑"); $green_key = array_search("ピンク",$color); if($green_key == FALSE){ echo "FALSE"; } else{ echo $green_key; } ?>
FALSE
指定位置から文字を取得
取り出し後の配列 = array_slice(取り出し元配列,開始位置[,取り出し個数][,添え字リセットなし(PHP5より)])
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
<?php header("Content-type: text/html; charset=utf-8"); $color = array("赤","青","黄","緑"); //配列の頭から数えて1から最後 $a = array_slice($color, 1); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の最後から数えて-2から最後 $a = array_slice($color,-2); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の頭から数えて1から2個 $a = array_slice($color,1,2); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の最後から数えて-2から1個 $a = array_slice($color,-2,1); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の頭から数えて1から後ろから2個戻る位置まで $a = array_slice($color,1,-2); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の最後から数えて-3から後ろから数えて-1まで $a = array_slice($color,-3,-1); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //添字がリセットされていない(PHP5から) $a = array_slice($color,1,2,TRUE); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //添字がリセットされていない(PHP5から) $a = array_slice($color,-2,1,TRUE); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; ?>
添字リセットなしのオプションは関係ありません。
<?php header("Content-type: text/html; charset=utf-8"); $color = array("red"=>"赤","blue"=>"青","yellow"=>"黄","green"=>"緑"); //配列の頭から数えて1から最後 $a = array_slice($color, 1); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の最後から数えて-2から最後 $a = array_slice($color,-2); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の頭から数えて1から2個 $a = array_slice($color,1,2); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の最後から数えて-2から1個 $a = array_slice($color,-2,1); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の頭から数えて1から後ろから2個戻る位置まで $a = array_slice($color,1,-2); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; //配列の最後から数えて-3から後ろから数えて-1まで $a = array_slice($color,-3,-1); foreach($a as $key => $value){ echo "[$key]:$value"; } echo "<br>"; ?>