Arr クラス
Arr クラスは、配列を扱うヘルパー関数を集めたものです。
is_multi($arr, $all_keys = false)
is_multi メソッドは、与えられた配列が多次元配列であるかチェックします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$arr |
必須 |
チェックする配列。 |
$all_keys |
false
|
trueの場合は全ての要素が多次元配列かをチェックします。 |
|
返り値 |
bool |
例 |
// 1 次元配列
$arr = array('one' => 1, 'two' => 2);
echo Arr::is_multi($arr);
// 実行結果: false
// 多次元配列
$arr = array('one' => array('test' => 1), 'two' => array('test' => 2), 'three' => array('test' => 3));
echo Arr::is_multi($arr);
// 実行結果: true
// 多次元配列で全ての要素をチェック
$arr = array('one' => array('test' => 1), 'two' => array('test' => 2), 'three' => 3);
echo Arr::is_multi($arr, false); // 実行結果: true
echo Arr::is_multi($arr, true); // 実行結果: false
|
is_assoc($arr)
is_assoc メソッドは、与えられた配列が連想配列であるかチェックします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$arr |
必須 |
チェックする配列。 |
|
返り値 |
bool |
例 |
$arr = array('foo', 'bar', 'baz', 'yay');
echo Arr::is_assoc($arr);
// 実行結果: false
$arr = array('foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz', 'yay' => 'yay');
echo Arr::is_assoc($arr);
// 実行結果: true
/*
* たとえもし '2' が string で定義されていたとしても、PHP は内部的に integer として保管するため、
* 連想配列とは認識されません!
*/
$arr = array(0 => 'foo', 1 => 'bar', '2' => 'baz', 3 => 'yay');
echo Arr::is_assoc($arr);
// 実行結果: false!
|
to_assoc($arr)
to_assoc メソッドは連想配列でない配列を連想配列に変換します。もし元の配列に数値が入っていたとしても変換します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$arr |
必須 |
変換する配列。 |
|
返り値 |
array|null |
例外 |
BadMethodCallException 引数の配列の要素数が
奇数のとき |
例 |
$arr = array('foo', 'bar', 'baz', 'yay');
print_r(Arr::to_assoc($arr));
// 実行結果:
Array
(
["foo"] => 'bar'
["baz"] => 'yay'
)
$arr = array('foo', 'bar', 'baz');
echo Arr::to_assoc($arr);
// 実行結果: null
|
assoc_to_keyval($assoc, $key_field, $val_field)
assoc_to_keyval メソッドは多次元配列を key=>val の配列に変換します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$assoc |
必須 |
変換する配列。 |
$key_field |
必須 |
key となる連想配列の添字。 |
$val_field |
必須 |
value となる連想配列の添字。 |
|
返り値 |
array |
例外 |
InvalidArgumentException 1 番目の引数が配列でないか、
Iterator インターフェイスを実装していないとき。 |
例 |
$people = array(
array(
"name" => "Jack",
"age" => 21
),
array(
"name" => "Jill",
"age" => 23
)
);
print_r(Arr::assoc_to_keyval($people, 'name', 'age'));
// 実行結果:
Array
(
["Jack"] => 21
["Jill"] => 23
)
|
keyval_to_assoc($array, $key_field, $val_field)
keyval_to_assoc メソッドは key => values の配列を与えられたフィールド名と共に多次元配列へ変換します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
変換する配列。 |
$key_field |
必須 |
キーをマッピングする連想配列の添え字。 |
$val_field |
必須 |
値をマッピングする連想配列の添え字。 |
|
返り値 |
array |
例外 |
InvalidArgumentException 1 番目の引数が配列でないか、
Iterator インターフェイスを実装していないとき。 |
例 |
$people = array(
"Jack" => 21,
"Jill" => 23
);
print_r(Arr::keyval_to_assoc($people, 'name', 'age'));
// 実行結果:
Array
(
[0] => Array
(
["name"] => "Jack"
["age"] => 21
)
[1] => Array
(
["name"] => "Jill"
["age"] => 23
)
)
|
average($array)
average メソッドは配列のすべての値をとり、その平均値を返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
平均値を求める配列。 |
|
返り値 |
array |
例 |
echo Arr::average(array('1', 2, 4, '8'));
// 実行結果: 3.75
|
flatten($array, $glue = ':', $reset = true)
flatten メソッドは、多次元配列 (連想配列と数値インデックス両方とも) を 1 次元配列に変換します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
変換する配列 |
$glue |
:
|
複数のキーを連結するための文字列 |
$reset |
true
|
flatten が内部で保持している配列に値を追加していく代わりに、新しく配列を作って値を格納します。 |
|
返り値 |
array |
例 |
$indexed = array(
array("a"),
array("b"),
array("c"),
);
print_r(Arr::flatten($indexed, '_'));
// 実行結果:
Array
(
[0_0] => a
[0_1] => b
[0_2] => c
)
|
flatten_assoc($array, $glue = ':', $reset = true)
flatten_assoc メソッドは、多次元連想配列を 1 次元の連想配列に落とし込みます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
変換する配列。 |
$glue |
:
|
キーをまとめて 1 つにするために使われる文字列 |
$reset |
true
|
flatten_assoc が内部で保持している配列に値を追加していく代わりに、新しく配列を作って値を格納します。 |
|
返り値 |
array |
例 |
$people = array(
array(
"name" => "Jack",
"age" => 21
),
array(
"name" => "Jill",
"age" => 23
)
);
print_r(Arr::flatten_assoc($people));
// 実行結果:
Array
(
[0:name] => Jack
[0:age] => 21
[1:name] => Jill
[1:age] => 23
)
// 別の配列を先頭にして変換してみましょう
print_r(Arr::flatten_assoc(array(array("name" => "Humpty", "age" => 11)), ":", false));
// 実行結果:
Array
(
[0:name] => Humpty
[0:age] => 11
[1:name] => Jill
[1:age] => 23
)
|
reverse_flatten($array, $glue = ':')
reverse_flatten
メソッドは、flatten によってまとめられた 1 次元配列を元の多次元配列 (連想配列含む) に戻します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
戻す 1 次元配列。 |
$glue |
:
|
キーを合成するために使われた文字 |
|
返り値 |
array |
例 |
$flattened = array(
'0_name' => 'James',
'0_age' => 24,
'1_name' => 'John',
'1_age' => 34,
);
print_r(Arr::reverse_flatten($flattened, '_'));
// 実行結果:
Array
(
[0] => Array
(
[name] => James
[age] => 24
)
[1] => Array
(
[name] => John
[age] => 34
)
)
|
filter_prefixed($array, $prefix, $remove_prefix = true)
filter_prefixed メソッドはプレフィックスによって配列をフィルタします。設定されたプレフィックスから始まるキーを持つ値のみの配列を返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
フィルタする配列。 |
$prefix |
必須 |
フィルタのためのプレフィックス文字列。 |
$remove_prefix |
true
|
配列のキーからプレフィックスを取り除くかどうか。 |
|
返り値 |
array |
例 |
$arr = array(
"user_name" => "John",
"user_surname" => "Lastname",
"project_name" => "Fuel",
"project_type" => "Framework",
);
print_r(Arr::filter_prefixed($arr, "user_"));
// 実行結果:
Array
(
[name] => John
[surname] => Lastname
)
// プレフィックスをそのまま保持しましょう
print_r(Arr::filter_prefixed($arr, "project_", false);
// 実行結果:
Array
(
[project_name] => Fuel
[project_type] => Framework
)
|
remove_prefixed($array, $prefix)
remove_prefixed メソッドは、与えられたプレフィックスにマッチするキーを持つ値を配列から取り除きます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
値が取り除く配列。 |
$prefix |
必須 |
フィルタに使うプレフィックス文字列。 |
|
返り値 |
array |
例 |
$arr = array(
"user_name" => "John",
"user_surname" => "Lastname",
"project_name" => "Fuel",
"project_type" => "Framework",
);
print_r(Arr::remove_prefixed($arr, "project"));
// 実行結果:
Array
(
[user_name] => John
[user_surname] => Lastname
)
|
filter_suffixed($array, $suffix, $remove_suffix = true)
filter_suffixed メソッドはサフィックスで配列をフィルタします。与えられたサフィックス文字列で終わるキーを持つ配列を返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
フィルタする配列。 |
$suffix |
必須 |
フィルタに使用する文字列 |
$remove_suffix |
true
|
配列のキーからサフィックスを取り除くかどうか。 |
|
返り値 |
array |
例 |
$arr = array(
"name_1" => "John",
"surname_1" => "Lastname",
"name_2" => "Ted",
"surname_2" => "Surname",
);
print_r(Arr::filter_suffixed($arr, "_1"));
// 実行結果:
Array
(
[name] => John
[surname] => Lastname
)
// サフィックスを保持したままにしてみましょう
print_r(Arr::filter_suffixed($arr, "_1", false);
// 実行結果:
Array
(
[name_1] => John
[surname_1] => Lastname
)
|
remove_suffixed($array, $suffix)
remove_suffixed メソッドは配列から与えられたサフィックスで終了するキーを持つ値を削除します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
値を取り除く配列。 |
$suffix |
必須 |
フィルタに使うサフィックス文字列。 |
|
返り値 |
array |
例 |
$arr = array(
"name_1" => "John",
"surname_1" => "Lastname",
"name_2" => "Ted",
"surname_2" => "Bear",
);
print_r(Arr::remove_suffixed($arr, "_1"));
// 実行結果:
Array
(
[name_2] => Ted
[surname_2] => Surname
)
|
filter_keys($array, $keys, $remove = false)
filter_keys メソッドは、与えられた配列に含まれた複数のキーで配列をフィルタします。$keys に含まれるキーを持つ値のみの配列を返します。また $keys によって元の配列の値を削除することもできます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
フィルタする配列。 |
$keys |
必須 |
配列をフィルタするためのキーを持つ配列。 |
$remove |
false
|
もし true ならば、フィルタされた配列を新しく作る代わりに、 $array から直接 $keys に含まれるキーを削除します。 |
|
返り値 |
array |
例 |
$arr = array(
"user_name" => "John",
"user_surname" => "Lastname",
"project_name" => "Fuel",
"project_type" => "Framework",
);
print_r(Arr::filter_keys($arr, array('project_name', 'user_name')));
// 実行結果:
Array
(
[project_name] => Fuel
[user_name] => John
)
// いくつかのキーを削除してみましょう
print_r(Arr::filter_keys($arr, array('user_name', 'user_surname'), true));
// 実行結果:
Array
(
[project_name] => Fuel
[project_type] => Framework
)
|
filter_recursive($array, $callback = null)
filter_recursive メソッドは、PHP の array_filter() 関数の再帰バージョンです。 array_filter() と同様に、フィルタするかどうかを決めるコールバック関数を渡すことができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
フィルタする配列。 |
$callback |
null
|
ブール値を返すコールバック関数 |
|
返り値 |
array |
例 |
$arr = array(
"user_name" => "John",
"user_surname" => "Lastname",
"info" => array(
0 => array(
"data" => "a value",
),
1 => array(
"data" => "",
),
2 => array(
"data" => 0,
),
),
);
print_r(Arr::filter_recursive($arr));
// 実行結果:
Array
(
[user_name] => John
[user_surname] => Lastname
[info] => Array
(
[0] => Array
(
[data] => a value
)
)
)
// コールバック関数を指定してみましょう
print_r(Arr::filter_recursive($arr, function($item){ return $item !== ""; }));
// 実行結果:
Array
(
[user_name] => John
[user_surname] => Lastname
[info] => Array
(
[0] => Array
(
[data] => a value
)
[1] => Array
(
)
[2] => Array
(
[data] => 0
)
)
)
|
subset($array, $keys, $default = null)
subset メソッドは、filter_keys と同様に $keys で渡された値を用いて配列にアクセスし、その結果得られた連想配列を返します。異なる点は subset が、渡されたキーがもし見つからなかった場合 $default 値を使って全ての要求されたキーが埋められることです。
このメソッドは内部的に get と set を使います。 $keys はドット区切り表記を用いることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
フィルタする配列 |
$keys |
必須 |
配列をフィルタするためのキーを持つ配列 |
$default |
null
|
キーが $array 中に見つからなかった場合に代わりに用いる値 |
|
返り値 |
array |
例 |
$arr = array(
"user" => array(
"name" => "John",
"surname" => "Lastname",
),
"project" => array(
"name" => "Fuel",
"type" => "Framework",
),
);
print_r(Arr::subset($arr, array('project.name', 'user.name')));
// 返り値:
Array
(
[project] => Array
(
[name] => Fuel
)
[user] => Array
(
[name] => John
)
)
print_r(Arr::subset($arr, array('project.name', 'project.manager')));
// 返り値:
Array
(
[project] => Array
(
[name] => Fuel
[manager] =>
)
)
print_r(Arr::subset($arr, array('project.name', 'project.manager', 'user', 'not_provided'), 'Not Provided'));
// 返り値:
Array
(
[project] => Array
(
[name] => Fuel
[manager] => Not Provided
)
[user] => Array
(
[name] => John
[surname] => Lastname
)
[not_provided] => Not Provided
)
|
get($array, $key, $default = false)
get メソッドは指定された配列の要素を返します。多次元配列には、階層をドット (.) で区切ることでアクセスできます。また、値がセットされていない場合、初期値を返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
アクセスする配列 |
$key |
必須 |
$array 配列のキー。もし null が渡された場合は全体が配列として返されます。 |
$default |
false
|
指定された要素が存在しない場合に返す値を指定します。 |
|
返り値 |
mixed. もし $key に配列を渡した場合は、その配列内のキーで得られた結果を各キーごとの連想配列で返します。 |
例 |
$person = array(
"name" => "Jack",
"age" => "21",
"location" => array(
"city" => "Pittsburgh",
"state" => "PA",
"country" => "US"
)
);
echo Arr::get($person, "name", "Unknown Name");
// 実行結果: "Jack"
echo Arr::get($person, "job", "Unknown job");
// 実行結果: "Unknown job"
// このメソッドは、キーの間を ドット (.) で区切ることで、より深い配列に潜ることが可能
echo Arr::get($person, "location.city", "Unknown City");
// 実行結果: "Pittsburgh"
|
set(&$array, $key, $value = null)
set メソッドは指定された配列に要素をセットします。多次元配列には、階層をドット (.) で区切ることでアクセスできます。
警告: 元の配列は参照によって編集されます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
アクセスする配列 |
$key |
必須 |
$array 配列のキー。もし、キーが渡されなかった場合や null が渡された場合、配列は破棄されます。また、 key -> value のペアが渡された場合はすべての値が配列にセットされます。 |
$value |
null
|
セットする値。 $key が配列の場合は無視されます。 |
|
返り値 |
void |
例 |
$person = array(
"name" => "Jack",
"age" => "21",
"location" => array(
"city" => "Pittsburgh",
"state" => "PA",
"country" => "US"
)
);
Arr::set($person, "name", "John");
// $person['name'] には "John" がセットされます。
// このメソッドは、キーの間を ドット (.) で区切ることで、より深い配列に潜ることが可能
Arr::set($person, "location.city", "Philadelphia");
// $person['location']['city'] には "Philadelphia" がセットされます。
// また、一度に複数の値をセットすることも出来ます。
Arr::set($person, array("name" => "John", "location.city" => "Philadelphia"));
|
pluck($array, $key, $index = null)
pluck メソッドは、配列かオブジェクトのコレクションから値をピックアップします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
ピックアップする配列。 |
$key |
必須 |
配列からピックアップするキー。 |
$index |
null
|
返り値の配列キーに入れる値をオプション指定できます |
|
返り値 |
void |
例 |
$collection = array(
array(
'id' => 2,
'name' => 'Bill',
'surname' => 'Cosby',
),
array(
'id' => 5,
'name' => 'Chris',
'surname' => 'Rock',
),
array(
'id' => 7,
'name' => 'Bert',
'surname' => 'Visser',
),
);
// id の配列を返します
$ids = \Arr::pluck($collection, 'id');
// array(2, 5, 7);
// name の配列を返しますがそのキーは id にします
$names = \Arr::pluck($collection, 'name', 'id');
// array(2 => 'Bill', 5 => 'Chris', 7 => 'Bert');
|
delete(&$array, $key)
delete メソッドは指定された配列の要素を削除します。多次元配列には、階層をドット (.) で区切ることでアクセスできます。
警告: 元の配列は参照によって編集され、結果のみが返されます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
アクセスする配列 |
$key |
必須 |
$array 配列のキー。もし、キーが渡されなかった場合や null が渡された場合、配列は破棄されます。 |
|
返り値 |
mixed, true の場合、そのキーは削除されました。 false の場合、そのキーは存在しませんでした。もし、あなたがキーの配列を渡した場合、戻り値は要求された全ての削除結果を持つ配列になります。 |
例 |
$person = array(
"name" => "Jack",
"age" => "21",
"location" => array(
"city" => "Pittsburgh",
"state" => "PA",
"country" => "US"
)
);
$result = Arr::delete($person, "name");
// $person['name'] は配列から削除され、 true が返されます。
// このメソッドは、キーの間を ドット (.) で区切ることで、より深い配列に潜ることが可能
$result = Arr::delete($person, "location.city");
// $person['location']['city'] は配列から削除され、 true が返されます。
// また、一度に複数の値を削除する事もできます。
$result = Arr::delete($person, array("name", "location.doesnotexist"));
// $person['name'] は削除され、 array('name' => true, 'location.doesnotexist' => false) が返されます。
|
insert(Array &$original, $value, $pos)
insert メソッドは、主にはエラーチェック付きの array_splice() 関数です。
警告: 元の配列は参照渡しされるので直接書き換えられます。成功かどうかを表すブール値のみが返ります。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$original |
必須 |
変更する配列 |
$value |
必須 |
挿入する値 |
$pos |
必須 |
挿入するオフセットを表す数値。マイナス値の場合は配列の末尾から数えた位置となります。 |
|
返り値 |
boolean |
例 |
$people = array("Jack", "Jill");
// 値をひとつ追加
Arr::insert($people, "Humpty", 0);
print_r($people);
// 実行結果:
Array
(
[0] => Humpty
[1] => Jack
[2] => Jill
)
// 複数の値を追加
Arr::insert($people, array("Hansel", "Gretel"), 1);
print_r($people);
// 実行結果:
Array
(
[0] => Humpty
[1] => Hansel
[2] => Gretel
[3] => Jack
[4] => Jill
)
// 配列をひとつ追加
Arr::insert($people, array( array("name" => "Wolf", "teeth" => "sharp")), 0);
print_r($people);
// 実行結果:
Array
(
[0] => Array
(
[name] => Wolf
[teeth] => sharp
)
[1] => Humpty
[2] => Hansel
[3] => Gretel
[4] => Jack
[5] => Jill
)
|
insert_assoc(array &$original, array $values, $pos)
insert_assoc メソッドは連想配列の特定の場所に要素を追加します。
警告: 元の配列は参照渡しされるので直接書き換えられます。成功したかどうかを表すブール値のみが返ります。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$original |
必須 |
変更する連想配列 |
$values |
必須 |
挿入する連想配列 |
$pos |
必須 |
配列を新たに挿入する位置。
負の値の場合は配列の最後尾より数えた場所に挿入されます。 |
|
返り値 |
boolean。成功の場合は true 、$pos が無効な位置の場合は false |
例 |
$people = array("name" => "Jack", "surname" => "Reacher");
Arr::insert_assoc($character, array("initial" => "P."), 1);
print_r($character);
// 実行結果:
Array
(
[name] => Jack
[initial] => P.
[surname] => Reacher
)
|
insert_before_key(Array &$original, $value, $key)
insert_before_key メソッドは与えられたキーの手前に要素を 1 つ追加します。
警告: 元の配列は参照渡しされるので直接書き換えられます。成功かどうかを表すブール値のみが返ります。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$original |
必須 |
変更する配列。 |
$value |
必須 |
挿入する値 |
$key |
必須 |
このキーの手前に挿入されます。 |
|
返り値 |
boolean |
例 |
$people = array("Jack", "Jill");
Arr::insert_before_key($people, "Humpty", 1);
print_r($people);
// 実行結果:
Array
(
[0] => Jack
[1] => Humpty
[2] => Jill
)
|
insert_after_key(Array &$original, $value, $key, $is_assoc = false)
insert_after_key メソッドは与えられたキーの直後に値を1つ追加します。
警告: 元の配列は参照渡しされるので直接書き換えられます。成功かどうかを表すブール値のみが返ります。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$original |
必須 |
変更する配列 |
$value |
必須 |
挿入する値 |
$key |
必須 |
このキーの直後に挿入されます。 |
$is_assoc |
false
|
$value が連想配列かどうか。 |
|
返り値 |
boolean |
例 |
$people = array("Jack", "Jill");
Arr::insert_after_key($people, "Humpty", 1);
print_r($people);
// 実行結果:
Array
(
[0] => Jack
[1] => Jill
[2] => Humpty
)
|
insert_after_value(Array &$original, $value, $search, $is_assoc = false)
insert_after_value メソッドは与えられた値の直後に要素を1つ追加します。
警告: 元の配列は参照渡しされるので直接書き換えられます。成功かどうかを表すブール値のみが返ります。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$original |
必須 |
変更する配列 |
$value |
必須 |
挿入する値 |
$search |
必須 |
この値を持つ要素の直後に挿入されます |
$is_assoc |
false
|
値が連想配列かどうか |
|
返り値 |
boolean |
例 |
$people = array("Jack", "Jill");
Arr::insert_after_value($people, "Humpty", "Jack");
print_r($people);
// 実行結果:
Array
(
[0] => Jack
[1] => Humpty
[2] => Jill
)
|
sort($array, $key, $order = 'asc', $sort_flags = SORT_REGULAR)
sort メソッドは多次元配列を値によってソートします。
静的 |
はい |
パラメータ |
|
返り値 |
mixed |
例 |
$data = array(
array(
'info' => array(
'pet' => array(
'type' => 'dog'
)
),
),
array(
'info' => array(
'pet' => array(
'type' => 'fish'
)
),
),
array(
'info' => array(
'pet' => array(
'type' => 'cat'
)
),
),
);
$data = Arr::sort($data, 'info.pet.type');
// 実行結果:
array(
array(
'info' => array(
'pet' => array(
'type' => 'cat'
)
),
),
array(
'info' => array(
'pet' => array(
'type' => 'dog'
)
),
),
array(
'info' => array(
'pet' => array(
'type' => 'fish'
)
),
),
);
|
multisort($array, $conditions, $ignore_case = false)
multisort メソッドは多次元配列を複数の値でソートします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
ソートする配列 |
$conditions |
必須 |
ソート条件を表す配列 |
$ornire_case |
false
|
大文字/小文字を区別するかどうか。 |
|
返り値 |
array |
例 |
$collection = array(
'i5' => array(
'name' => 'Carl',
'age' => 17,
'points' => 30,
'arr' => array(
'key' => 10,
),
),
'i7' => array(
'name' => 'carl',
'age' => 17,
'points' => 20,
'arr' => array(
'key' => 10,
),
),
'i2' => array(
'name' => 'Bert',
'age' => 20,
'points' => 30,
'arr' => array(
'key' => 10,
),
),
);
$collection = \Arr::multisort($collection, array(
'name' => SORT_ASC,
'points' => array(SORT_ASC, SORT_NUMERIC),
'age' => array(SORT_ASC, SORT_NUMERIC),
), true);
print_r($collection);
// 実行結果:
Array
(
[i2] => Array
(
[name] => Bert
[age] => 20
[points] => 30
[arr] => Array
(
[key] => 10
)
)
[i7] => Array
(
[name] => carl
[age] => 17
[points] => 20
[arr] => Array
(
[key] => 10
)
)
[i5] => Array
(
[name] => Carl
[age] => 17
[points] => 30
[arr] => Array
(
[key] => 10
)
)
)
|
in_array_recursive($needle, $haystack, $strict = false)
in_array_recursive メソッドは値が配列に含まれているかどうか再帰的にチェックします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$needle |
必須 |
配列の中から探す値。 |
$haystack |
必須 |
検索する配列。 |
$strict |
false
|
値の比較に == を用いるか === を用いるか。 |
|
返り値 |
bool |
例 |
$arr = array('one' => 1, 2, 3, array(56), 87);
echo Arr::in_array_recursive('56', $arr);
// 実行結果: true
echo Arr::in_array_recursive('87', $arr, true);
// 実行結果: false
echo Arr::in_array_recursive(87, $arr, true);
// 実行結果: true
|
merge($array)
merge メソッドは 2 つの配列を再帰的にマージしますが、array_merge_recursive() とは 2 つの重要な点が異なります。
- 2つの異なる値が両者とも配列でない場合は、
マージされる変わりに前者の値は後者の値で上書きされます。
- 競合していない数字のキーは変更されません、
数字キーがすでに存在する場合のみ array_push() を使用して値が追加されます。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$array |
array |
必須 |
可変個の引数で配列を渡せるが、すべての型は配列でなければならない。 |
|
返り値 |
array |
例外 |
渡された引数のどれかが配列ではなかった場合 InvalidArgumentException が投げられる。 |
例 |
$arr1 = array(
'one' => 1,
2,
3,
array(
56
),
87
);
$arr2 = array(
27,
90,
array(
'give_me' => 'bandwidth'
),
'90',
'php',
);
print_r( Arr::merge($arr1, $arr2) );
// 実行結果:
Array
(
[one] => 1
[0] => 2
[1] => 3
[2] => Array (
[0] => 56
)
[3] => 87
[4] => 27
[5] => 90
[6] => Array (
[give_me] => bandwidth
)
[7] => 90
[8] => php
)
|
merge_assoc($array, ...)
merge_assoc メソッドは 2 個以上の配列を再帰的にマージします。ただし array_merge_recursive() とは 2 つの重要な点が異なります。
- それぞれの配列に同じキーで異なる値が含まれていた場合は、
新たな配列を作ってマージすることはせずに、単純に後者が前者を上書きします。
- 数字のキーは変更されません
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$array |
array |
必須 |
複数の値はすべて配列でなければなりません |
|
返り値 |
array |
例外 |
InvalidArgumentException 引数のどれかが配列ではない。 |
例 |
$arr1 = array(
'one' => 1,
2 => 2,
3 => 3,
4 => array(
56
),
5=> 87
);
$arr2 = array(
1 => 27,
2 => 90,
4 => array(
'give_me' => 'bandwidth'
),
6 => '90',
7 => 'php',
);
print_r( Arr::merge_assoc($arr1, $arr2) );
// 実行結果:
Array
(
[one] => 1
[2] => 90
[3] => 3
[4] => Array (
[0] => 56
[give_me] => bandwidth
)
[5] => 87
[1] => 27
[6] => 90
[7] => php
)
|
search($array, $value, $default = null, $recursive = true, $delimiter = '.', $strict = false)
search メソッドは、与えられた値によって配列を検索し、対応するキーまたはデフォルト値を返します。
- $recursive が true の場合は、区切り文字として $delimiter を使った合成キーを用います。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$array |
array |
必須 |
検索される配列 |
$value |
mixed |
必須 |
検索する値 |
$default |
string |
null
|
もし値が存在しなかった場合に返されるデフォルト値 |
$recursive |
boolean |
true
|
再帰的に取得するかどうか |
$delimiter |
string |
'.'
|
$recursive が true の場合の区切り文字 |
$strict |
bool |
false
|
キーに厳密な比較を用いるかどうか |
|
返り値 |
int|string|null |
例外 |
InvalidArgumentException 第 1 引数が配列ではない。
InvalidArgumentException $default 引数が文字、 int 、 null のいずれでもない。
InvalidArgumentException $delimiter 引数が文字列ではない。
|
例 |
$arr = array(
'one' => 1,
'two' => 2,
'three' => array(
'a' => 4,
'b' => 'foo'
),
'four',
array(
null,
array(
null,
null,
null,
array(
'deep'
)
)
),
);
echo Arr::search($arr, 1);
// one
echo Arr::search($arr, 'four');
// 0
var_dump(Arr::search($arr, 5));
// NULL
echo Arr::search($arr, 4, null, true);
// three.a
var_dump(Arr::search($arr, '4', null, true, '.', true));
// NULL
echo Arr::search($arr, 'deep', null, true);
// 1.1.3.0
|
unique($array)
unique メソッドは、与えられた配列に含まれるすべての一意な値を返します。
最初に見つかった値は保持され、重複したものは破棄されます。その場合のキーはそのまま残ります。
このメソッドは array_unique() のように動作しますが、まず第一に配列をソートすることはしませんし、
配列中のオブジェクトやクロージャを取り除くこともしません。
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$array |
array |
必須 |
重複を取り除く配列 |
|
返り値 |
array |
例 |
$array = array(
'val1' => 'hello', 'val2' => 'hello', 'val3' => 'bye',
);
// 実行結果: array('val1' => 'hello', 'val3' => 'bye')
$result = Arr::unique($array);
|
sum($array, $key)
sum メソッドは $key によって指定された値の合計値を計算します。
静的 |
はい |
パラメータ |
パラメータ |
タイプ |
デフォルト |
説明 |
$array |
array |
必須 |
値を保持している配列 |
$key |
string |
必須 |
合算する値を取得するキー |
|
返り値 |
int |
例外 |
InvalidArgumentException 第一引数が配列ではなかった場合。 |
例 |
$collection = array(
array(
'age' => 20,
'name' => 'Bill',
'scores' => array(
'math' => 10,
),
),
array(
'age' => 25,
'name' => 'Chris',
'scores' => array(
'math' => 15,
),
),
array(
'age' => 38,
'name' => 'Bert',
'scores' => array(
'math' => 5,
),
),
);
// 配列中の age の値を合計値を計算する
$total_age = Arr::sum($collection, 'age'); // 83
// 配列中の 'scores.math' の合計値を計算する
$total_score = Arr::sum($collection, 'scores.math'); // 30
|
reindex($array)
reindex メソッドは、配列内の整数キーの数値の振り直しを再帰的に行います。文字列キーには何も行いません。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$array |
array |
必須 |
再インデックスする配列 |
|
返り値 |
array |
例 |
$array = array(
2 => 2,
'three' => 3,
5 => array(
2 => 2,
'three' => 3,
5 => 5
),
7 => 7
);
// 配列を再インデックスします
print_r( Arr::reindex($array) );
// 実行結果:
Array
(
[0] => 2
[three] => 3
[1] => Array
(
[0] => 2
[three] => 3
[1] => 5
)
[2] => 7
)
|
previous_by_key($array, $key, $get_value = false, $strict = false)
previous_by_key メソッドを用いると、
配列中のあるキーの 1 つ前の要素のキーまたは値を得ることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
調べる配列 |
$key |
必須 |
起点となる要素を特定するキー |
$get_value |
false
|
false なら見つかった要素のキーを、true ならば値を返す |
$strict |
false
|
キーに厳密な比較を用いるかどうか |
|
返り値 |
目的のキーまたは値、配列に目的の要素が存在しない場合は null 、渡されたキーが配列内に存在しない場合は false 。 |
例 |
// 検索対象の配列
$arr = array(2 => 'A', 4 => '2', 6 => 'C');
// 返り値は false 、配列内に 1 のキーは存在しない
$result = Arr::previous_by_key($arr, 1);
// 返り値は null 、手前の要素が存在しない
$result = Arr::previous_by_key($arr, 2);
// 返り値は false 、配列内に '2' (文字列) のキーは存在しない
$result = Arr::previous_by_key($arr, '2', false, true);
// 返り値は 2 、配列内のキー 4 の手前の要素のキー
$result = Arr::previous_by_key($arr, 4);
// 返り値は 'A' 、指定された手前の要素の値
$result = Arr::previous_by_key($arr, 4, true);
|
next_by_key($array, $key, $get_value = false, $strict = false)
next_by_key メソッドを用いると、
配列中のあるキーの 1 つ次の要素のキーまたは値を得ることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
調べる配列 |
$key |
必須 |
1 つ次を調べる対象となるキー |
$get_value |
false
|
false なら見つかった要素のキーを、true ならば値を返す |
$strict |
false
|
キーに厳密な比較を用いるかどうか |
|
返り値 |
目的のキーまたは値、配列に目的の要素が存在しない場合は null 、渡されたキーが配列内に存在しない場合は false 。 |
例 |
// 検索対象の配列
$arr = array(2 => 'A', 4 => '2', 6 => 'C');
// 返り値は false 、配列内に 1 のキーは存在しない
$result = Arr::next_by_key($arr, 1);
// 返り値は null 、次の要素は存在しない
$result = Arr::next_by_key($arr, 6);
// 返り値は false 、配列内に '2' (文字列) のキーは存在しない
$result = Arr::next_by_key($arr, '2', false, true);
// 返り値は 6 、配列内の 4 のキーの次の要素のキー
$result = Arr::next_by_key($arr, 4);
// 返り値は 'C' 、指定された次の要素の値
$result = Arr::next_by_key($arr, 4, true);
|
previous_by_value($array, $value, $get_value = true, $strict = false)
previous_by_value メソッドを用いると、
配列中のある値を持つ要素の 1 つ前の要素のキーまたは値を得ることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
調べる配列 |
$value |
必須 |
起点となる要素を特定する値 |
$get_value |
true
|
false なら見つかった要素のキーを、true ならば値を返す |
$strict |
false
|
値にに厳密な比較を用いるかどうか |
|
返り値 |
目的のキーまたは値、配列に目的の要素が存在しない場合は null 、渡された値が配列内に存在しない場合は false 。 |
例 |
// 検索対象の配列
$arr = array(2 => 'A', 4 => '2', 6 => 'C');
// 返り値は false 、配列内に 'Z' の値は存在しない
$result = Arr::previous_by_value($arr, 'Z');
// 返り値は null 、手前の要素が存在しない
$result = Arr::previous_by_value($arr, 'A');
// 返り値は false 、配列内には 2 の値を持つ要素は存在しない、あるのは '2' (文字列) のみ
$result = Arr::previous_by_value($arr, 2, false, true);
// 返り値は 'A' 、指定された要素の手前の値
$result = Arr::previous_by_value($arr, '2');
// 返り値は 2 、指定された要素の手前の要素のキー
$result = Arr::previous_by_value($arr, '2', false);
|
next_by_value($array, $value, $get_value = true, $strict = false)
next_by_value メソッドを用いると、
配列中のある値を持つ要素の 1 つ次の要素のキーまたは値を得ることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$array |
必須 |
調べる配列 |
$value |
必須 |
起点となる要素を特定する値 |
$get_value |
true
|
false なら見つかった要素のキーを、true ならば値を返す |
$strict |
false
|
値に厳密な比較を用いるかどうか |
|
返り値 |
目的のキーまたは値、配列に目的の要素が存在しない場合は null 、渡された値が配列内に存在しない場合は false 。 |
例 |
// 検索対象の配列
$arr = array(2 => 'A', 4 => '2', 6 => 'C');
// 返り値は false 、配列内に 'Z' の値は存在しない
$result = Arr::next_by_value($arr, 'Z');
// 返り値は null 、次の要素は存在しない
$result = Arr::next_by_value($arr, 'C');
// 返り値は false 、配列内に 2 の値を持つ要素は存在しない、あるのは '2' (文字列) のみ
$result = Arr::next_by_value($arr, 2, false, true);
// 返り値は 'C' 、指定された要素の次の要素の値
$result = Arr::next_by_value($arr, '2');
// 返り値は 6 、指定された要素の次の要素のキー
$result = Arr::next_by_value($arr, '2', false);
|
'by_key' と 'by_value' のメソッドはエラーを通知するために null と false を返すことに注意して下さい。
このために、渡される配列に null と false を含めることはできません。
一般的なヘルパー
in_arrayi($needle, $haystack)
in_arrayi 関数は in_array の大小文字を区別しないバージョンです。
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$needle |
string |
必須 |
検索する値 |
$haystack |
array |
必須 |
検索対象の配列 |
|
返り値 |
bool |
例 |
echo in_arrayi('This', array('something','tHis'));
// 実行結果: true
echo in_arrayi('Thi', array('something','tHis'));
// 実行結果: false
|