配列配列関数2
- array_change_key_case〔配列のキーをすべて小文字あるいは大文字にして返す〕
- array_combine
〔一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成〕
- array_count_values〔配列の値の数を数える〕
- array_flip〔配列の値を反転〕
- array_key_exists〔指定したキーまたは添字が配列にあるか調べる〕
- array_keys〔配列のキーを全て返す〕
- array_map〔指定した配列の要素にコールバック関数を適用〕
- array_product
〔配列の値の積を計算〕
- array_reverse〔配列の要素を逆順にする〕
- array_search〔配列に特定の値があるか調べる〕
- array_sum〔配列の値の合計を計算する〕
- array_values〔配列の値を全て返す〕
- array_walk〔配列の全ての要素にユーザー関数を適用〕
- array_walk_recursive
〔配列の全ての要素にユーザー関数を再帰的に適用〕
array_change_key_case
配列のキーをすべて小文字あるいは大文字にして返す
unknown
配列のキーが文字列の場合、そのキー全てを小文字または大文字にした配列を返します。 数値添字はそのままとなります。 配列が配列でない場合は、エラー(E_WARNING)が発生し、FALSEを返します。
この関数を使用してキーが大文字あるいは小文字になることで、キーが重複してしまう場合は、配列の後ろの方にある値が他の値を上書きします。
オプションの第2引数ケースには、2つの定数CASE_UPPER(大文字)またはCASE_LOWER(小文字)を指定します。 デフォルトは、CASE_LOWER(小文字)。
<?
# 配列のキーを大文字にする
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
//Array ( [FIRST] => 1 [SECOND] => 4 )
# 配列のキーを小文字にする
print_r(array_change_key_case($input_array, CASE_LOWER));
//Array ( [first] => 1 [second] => 4 )
# この関数を使用することでキーが重複してしまう場合、
# 配列の後ろの値が他の値を上書きします
$input_array = array("FirSt"=>1, "SecOnd"=>2, "first"=>"1th", "second"=>"2nd");
print_r(array_change_key_case($input_array, CASE_UPPER));
// Array ( [FIRST] => 1th [SECOND] => 2nd )
?>
array_combine 
一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成
unknown
キー配列の値をキーとして、値の配列の値を対応する値とする配列を返します。 互いの配列の要素数が一致しない場合または空の配列の場合に、FALSEを返します。
<?
if (!function_exists('array_combine')) {
function array_combine($keys, $values) {
$keys = array_values($keys);
$values = array_values($values);
$max = max( count( $keys ), count( $vals ) );
$combine_ary = array();
for($i=0; $i<$max; $i++) {
$combine_ary[$keys[$i]] = $values[$i];
}
if(is_array($combine_ary)) return $combine_ary;
else return false;
}
}
?>
<?
$keys = array("a","b","c");
$values = array("apple","banana","coconut");
print_r(array_combine($keys,$values));
//Array ( [a] => apple [b] => banana [c] => coconut )
?>
array_count_values
配列の値の数を数える
unknown
配列の値をキーとし、配列にその値が出現した回数を値とした配列を返します。 配列の要素が文字列あるいは整数以外の型の場合は、そのたびにエラー(E_WARNING)が発生します。
<?
$input = array(1, "apple", 1, "banana", "apple", 1);
print_r(array_count_values($input));
//Array ( [1] => 3 [apple] => 2 [banana] => 1 )
?>
array_flip
配列の値を反転
unknown
配列のキーと値を逆転して返します。失敗した場合は、FALSEを返します。 同じ値が複数回出現した場合、最後のキーがその値として使われその他の値は失われます。
<?
$trans = array ("apple" => 1, "armond" => 1, "cocoa" => 2);
$trans = array_flip ($trans);
print_r($trans); //Array ( [1] => armond [2] => cocoa )
?>
array_key_exists
指定したキーまたは添字が配列にあるか調べる
unknown
指定したキーが検索対象の配列に設定されている場合にTRUEを返します。 そうでない場合にFALSEを返します。 キーは配列添字として使用できる全ての値を指定できます。 この関数は、0、NULL値を持つ配列キーに対して、TRUEを返します。
<?
$search_array = array('a' => 'apple', 'b' => 'banan');
if (array_key_exists('a', $search_array)) echo '指定されたキーが見つかりました<br>';
else echo '指定されたキーは見つかりませんでした<br>';
//指定されたキーが見つかりました
?>
<?
$search_array = array('a' => null, 'b' => 4, 'c' => 0);
echo isset($search_array['b'])."<br>"; //true
echo array_key_exists('b', $search_array)."<br>"; //true
//キーがNULLの場合
echo isset($search_array['a'])."<br>"; //false
echo array_key_exists('a', $search_array)."<br>"; //ture(NULL値でもTRUEを返す)
//キーがゼロの場合
echo isset($search_ary['c'])."<br>"; //false
echo array_key_exists('c', $search_array)."<br>"; //true(ゼロでもTRUEを返す)
?>
array_keys
配列のキーを全て返す
unknown
配列内のキー(添字)を取り出し、キーを配列にして返します。
オプションの第2引数検索対象要素を指定した場合、その検索対象要素に関するキーのみが返されます。 省略した場合は、配列から全てのキーが返されます。
配列から全ての値を取り出す場合は、array_values()関数を使用してください。
<?
$input = Array("a"=>"apple", "b"=>"banana", "c"=>"cocoa");
print_r(array_keys($input));
//Array ( [0] => a [1] => b [2] => c )
print_r(array_keys($input, "cocoa"));
//Array ( [0] => c )
$input = Array("a" => "apple", "banana");
print_r(array_keys($input));
//Array ( [0] => a [1] => 0 )
$input = Array ("blue", "red", "green", "blue", "blue");
print_r(array_keys($input,"blue"));
//Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 )
$input = Array (
"color" => Array("blue", "red", "green"),
"size" => Array("small", "medium", "large")
);
print_r(array_keys($input));
//Array ( [0] => color [1] => size )
#オプション引数'検索する値'を指定すると、検索する値にマッチしたキーが全て返される
$input = Array ("blue", "red", "green", "blue", "blue");
print_r(array_keys($input,"blue"));
//Array ( [0] => 0 [1] => 3 [2] => 4 )
?>
array_map
指定した配列の要素にコールバック関数を適用
unknown
配列1の各要素にコールバック関数を適用後、その全ての要素を含む要素を返します。
コールバック関数が受け付ける引数の数は、この関数に渡される配列の数に一致させる必要があります(コールバック関数が対応する要素に対して並行に適用されるため)。
配列の長さが等しくない場合、最も短い配列は空の要素で拡張されます。
<?
function cube($n) { return $n*$n; }
$a = Array(1,2,3,4,5);
$b = array_map("cube",$a);
print_r($b); //Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
//Array ( [FIRST] => 1 [SECOND] => 4 )
print_r(array_change_key_case($input_array, CASE_LOWER));
// Array ( [first] => 1 [second] => 4 )
#配列の配列を生成(callback関数名にNULLを使用)
$a = array(1,2,3);
$b = array("red","yellow","green");
$c = array("apple","banana","avocado");
$d = array_map(NULL, $a, $b, $c);
print_r($d);
/*
Array
(
[0] => Array
(
[0] => 1
[1] => red
[2] => apple
)
[1] => Array
(
[0] => 2
[1] => yellow
[2] => banana
)
[2] => Array
(
[0] => 3
[1] => green
[2] => avocado
)
)
*/
?>
array_product 
配列の値の積を計算
unknown
配列の全ての値の積を計算した結果を、integer型またはfloat型で返します。
<?
#配列の値の積を求める
$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";
//product(a) = 384
?>
array_reverse
配列の要素を逆順にする
unknown
配列の要素を逆順にした配列を返します。
キーが文字列の場合は常にキーが保持されますが、キーが数値の場合は、オプション引数キーの保持にTRUEを指定すると、元配列のキーが保持されます。 デフォルトはFALSE(キーは保持しない)で、0からの連番に振り直されます。
<?
$fruit = array("apple","banana","grape");
print_r(array_reverse($fruit));
//Array ( [0] => grape [1] => banana [2] => apple )
print_r(array_reverse($fruit,TRUE));
//Array ( [2] => grape [1] => banana [0] => apple )
#キーが文字列の場合、第1引数にTRUEを指定しなくても、キーと値の関係が維持される
$fruit = array("a"=>"apple","b"=>"banana","g"=>"grape");
print_r(array_reverse($fruit));
//Array ( [g] => grape [b] => banana [a] => apple )
?>
array_search
配列に特定の値があるか調べる
unknown
検索する値が検索する配列内に見つかった場合、最初にマッチしたキーを返します。 見つからない場合は、FALSE(PHP 4.2.0 以前はNULL)を返します。 検索する値が文字列の場合、大文字と小文字を区別して比較されます。 オプション引数厳格にTRUEを指定すると、型も一致するか確認します。
この関数では最初にマッチしたキーしか取得できません。 全てのマッチした値のキーを取得する場合は、array_keys()関数にオプション引数 '検索する値' を付けて使用して下さい。
<?
$arr = array("dog", "cat", "cow", 6, "10");
#「検索する配列」に、「検索する値」が見つかれば「その値のキー」を返し、
#見つからなければ「FALSE」を返す。
$findkey = array_search("6", $arr);
if($findkey) echo $findkey;
else echo "見つかりません";
//3
#引数「厳格」に「TRUE」を指定すると、要素の型まで厳格に比較する。
#デフォルト値は「FALSE」。
$findkey = array_search("6", $arr, TRUE);
if($findkey) echo $findkey;
else echo "見つかりません";
//見つかりません
#「検索する値」に配列を指定した場合
$input[a] = array("a","aa","aaa");
$input[b] = "bbb";
$input[c] = "ccc";
$input[d] = "ddd";
$input[e] = "eee";
if($res=array_search(array("a","aa","aaa"),$input)) echo $res;
else echo "なし";
//a
?>
array_sum
配列の値の合計を計算する
unknown
数値配列の値を合計した結果を、整数またはfloat型で返します。
<?
$input[a] = "1";
$input[b] = "2";
$input[c] = "c"; //値が文字列の場合は、無視される
$input[d] = "3";
$input[e] = "5";
$sum = array_sum($input);
echo $sum; //11
//値に小数点が含まれていてもOK
$input[a] = "1.0";
$input[b] = "2.2";
$input[c] = "c";
$input[d] = "0.4";
$input[e] = "5";
$sum = array_sum($input);
echo $sum; //8.6
?>
array_values
配列の値を全て返す
unknown
配列から全ての値を取り出し、数値キーを振った配列を返します。
配列から全てのキーを取り出す場合は、array_keys()関数を使用してください。
<?
$input = array("1"=>"apple", "2"=>"banana", "c"=>"cocoa");
print_r(array_values($input));
//Array ( [0] => apple [1] => banana [2] => cocoa )
?>
array_walk
配列の全ての要素にユーザー関数を適用
unknown
配列の各要素にユーザー定義関数を適用します。 成功した場合にTRUE、失敗した場合にFALSEを返します。
通常、ユーザー定義関数は引数を2つとります(配列の値が第1引数、キーが第2引数)。 オプションの第2引数ユーザーデータを指定すると、ユーザー定義関数が第3引数として渡されます。
第3引数ユーザー定義関数が、指定された引数より多いパラメータを必要とする場合、ユーザー定義関数をコールする度にE_WARNINGレベルのエラー発生します。 警告を出さないようにする場合は、この関数をコールする前にエラー演算子(@)を付けるか、error_reporting()関数を使用します。
<?
$fruits = array("c" => "coconut", "a" => "apple", "b" => "banana");
function test_alter(&$item1, $key, $prefix){
$item1 = "$prefix: $item1";
}
function test_print ($item2, $key){
echo "$key. $item2<br>\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
array_walk($fruits, 'test_print');
/*
Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. f
*/
?>
array_walk_recursive 
配列の全ての要素にユーザー関数を再帰的に適用
unknown
配列の各要素にユーザー定義関数を適用します。 この関数は配列の要素内を再帰的に辿ります。 成功した場合にTRUE、失敗した場合にFALSEを返します。
通常、ユーザー定義関数は引数を2つとります(配列の値が第1引数、キーが第2引数)。 オプションの第2引数ユーザーデータを指定するとユーザー定義関数が第3引数として渡されます。
<?
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key){
echo "$key holds $item\n";
}
array_walk_recursive($fruits, 'test_print');
/*
a holds apple
b holds banana
sour holds lemo
*/
?>