戻る

配列を扱うPHP関数

count()関数

配列の要素を数える。

count()関数の構文

要素の数 = 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()関数、array_push関数

配列に要素を追加。

array_unshift()関数の構文

先頭に追加後の要素数 = array_unshift(追加元配列,追加する要素[,追加する要素]);

int array_unshift ( array &$array , mixed $var [, mixed $... ] )

array_push()関数の構文

最後に追加後の要素数 = 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()関数、array_pop()関数

配列の要素を削除する。

array_shift()関数の構文

先頭から要素を削除

削除した要素 = array_shift(削除元配列);

mixed array_shift ( array &$array )

array_pop()関数の構文

最後から要素を削除

削除した要素 = 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})";
?>

ライオンネコイヌゾウウサギキリン(キツネ)
ライオンネコイヌゾウウサギ(キリン)

sort()関数、rsort()関数、ksort()関数、krsort()関数、asort()関数、arsort()関数

配列の並べ替え

論理値(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)

list()関数

配列を変数に1度に代入

list()関数の構文

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>

listは連想配列ではそのまま使えない

<?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()関数

配列を検索する

array_search()関数の構文

検索した添字(キー) = 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()関数

指定位置から文字を取得

取り出し後の配列 = 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>";
?>

inserted by FC2 system