4
4

More than 1 year has passed since last update.

【PHP】かゆいところに手が届く配列につかう関数まとめ

Last updated at Posted at 2020-08-20
  1. array_merge --配列同士を結合する
  2. array_merge_recursive -- 配列同士を結合する(キーが同じ文字列の場合も上書きされない)
  3. array_count_values -- 配列の値の登場回数を調べる
  4. array_diff_key -- 配列のキーの差異を確認する
  5. array_key_exists -- 指定したキーが配列に存在するか調べる
  6. array_filter -- 配列からキーまたは値を指定し配列を抽出する
  7. array_fill_keys -- 対象の配列をキーにして値を設定する
  8. array_map -- 配列の要素全てに指定した関数を適用させる
  9. array_rand -- 配列から要素をランダムに取得する
  10. array_chunk -- 配列を指定した要素の数ずつ分割する
  11. array_column -- 多次元配列から特定カラムの配列を作る
  12. array_change_key_case -- キー名の大文字、小文字を変換する
  13. array_flip -- 配列のキーと値を反転する
  14. extract -- 連想配列のキー名から変数を作る

1. array_merge

配列同士を結合する
Key値が重複していた場合は、ゼロから連続した数値に置き換えられる

array_merge ( array $配列 [, 追加する配列 $... ] )

第一引数に対象の配列を指定
以降は追加する配列を複数指定できる

また、第一引数のみ指定した場合、キーが数値ならゼロからキーが振られる

//配列
$fruits1 = ['apple', 'orange'];
$fruits2 = ['strawberry', 'cherry'];
$fruits3 = ['anzu', 'papaya'];

//結合
$fruits = array_merge($fruits1, $fruits2, $fruits3);

//出力結果
Array
(
    [0] => apple
    [1] => orange
    [2] => strawberry
    [3] => cherry
    [4] => anzu
    [5] => papaya
)

⚡️Key値の数値が重複していた場合は、ゼロから連続した数値に置き換えられる

//配列
$fruits1 = [
            0=>'apple',
            1=>'orange',
            2=>'melon',
            3=>'banana',
            4=>'pineapple'
          ];
 
$fruits2 = [
            0=>'strawberry',
            1=>'cherry',
            2=>'watermelon'
           ];
					 
//結合
$fruits = array_merge($fruits1, $fruits2);

//出力結果
Array
(
    [0] => apple
    [1] => orange
    [2] => melon
    [3] => banana
    [4] => pineapple
    [5] => strawberry
    [6] => cherry
    [7] => watermelon
)

⚡️キーが文字列で重複していた場合は上書きされ先の値は破棄されてしまう

//配列
$fruits1 = [
            'key1'=>'apple',
            'key2'=>'orange',
            'key3'=>'melon',
            'key4'=>'banana'
          ];
 
$fruits2 = [
            'key1'=>'strawberry',
            'key2'=>'cherry'
           ];
					 
//結合
$fruits = array_merge($fruits1, $fruits2);

//出力結果
Array
(
    key1 => strawberry
    key2 => cherry
    key3 => melon
    key4 => banana
)

2. array_merge_recursive

配列同士を結合する
keyの添字が文字列の場合、同じ文字列同士で配列を作成できる

array_merge_recursive ( array $配列 [, 追加する配列 $... ] )

第一引数に対象の配列を指定
以降は追加する配列を複数指定できる
添字が数値の場合の動作はarray_mergeと同じ処理

//連想配列
$fruits1 = [
            'key1'=>'apple',
            'key2'=>'orange',
            'key3'=>'melon',
            'key4'=>'banana',
            'key5'=>'pineapple'
          ];
 
$fruits2 = [
            'key1'=>'strawberry',
            'key2'=>'cherry',
            'key3'=>'watermelon'
           ];
					 
//結合
$fruits_merge = array_merge_recursive($fruits1, $fruits2);

//出力結果
Array
(
    [key1] => Array
        (
            [0] => apple
            [1] => strawberry
        )
 
    [key2] => Array
        (
            [0] => orange
            [1] => cherry
        )
 
    [key3] => Array
        (
            [0] => melon
            [1] => watermelon
        )
 
    [key4] => banana
    [key5] => pineapple
)

3. array_count_values

配列の値の登場回数を調べる

array_count_values ( array $array )

第一引数に対象の配列

// 配列
	$queue = [ "a", "b", "c", "d", "b", "c", "b" ] ;

	// 登場回数を取得
	$result = array_count_values( $queue ) ;
	
	//出力結果
	Array
(
    [a] => 1
    [b] => 3
    [c] => 2
    [d] => 1
)

4. array_diff_key

配列のキーの差異を確認する

array_diff_key ( array $array1 , array $array2 [, array $... ] )

第一引数に対象の配列
第二引数に比較対象の配列

	// 配列
	$queue1 = [
		"a" => 1 ,
		"b" => 2 ,
		"c" => 3 ,
	] ;

	$queue2 = [
		"a" => 11 ,
		"b" => 12 ,
	] ;

	// 第2引数にはないキーを調べる
	$result = array_diff_key( $queue1, $queue2 ) ;

//出力結果
Array
(
    [c] => 3
)

5. array_key_exists

指定したキーが配列に存在するか調べる
in_arrayより高速、値がnullでも検索ができる

array_key_exists ( $キー名 , $配列名 )

第一引数に調べたいキー名を指定
第二引数に対象の配列名を指定

返り値:

キーが存在している場合はTRUE

キーが存在しない場合はFALSEが返ってくる

6. array_filter

配列からキーまたは値を指定し配列を抽出する

array_filter(配列, コールバック関数 [, フラグ]);

第1引数に対象の配列、第2引数にコールバック関数でなにを抽出するかを指定した関数を入れる

フラグには以下で指定することができる

ARRAY_FILTER_USE_KEY : 配列のキーで抽出する

ARRAY_FILTER_USE_BOTH : 配列のキーと値で抽出する

//配列
$fruits = ['apple', 'orange', 'melon'];

//orangeを抽出
$res = array_filter($fruits, function($attr){
    return $attr == 'orange';
});

//出力結果
Array
(
	[1] => orange
)

7. array_fill_keys

対象の配列をキーにして値を設定する

array_fill_keys ( array $keys , mixed $value )

第一引数にキーになる配列を指定
第二引数に入れたい値

	// 配列を作成
	$queue = [ "a", "b", "c" ] ;

	$value = [ "A", "B", "C" ] ;

	// $queueをキー、$valueを値にした配列を作成
	$result = array_fill_keys( $queue, $value ) ;
	
	//出力結果
	Array
(
    [a] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )

    [b] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )

    [c] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )

)

8. array_map

配列の要素全てに指定した関数を適用させる

array_map( コールバック関数名 , $配列1 [, $配列2, $... ] )

第一引数にコールバック関数名もしくは関数を入れる
以降はコールバック関数に適用する配列名を複数指定できる

//コールバック関数
function valuecalc($n)
{
    return($n + $n);
}

//配列
$value_array = [100, 200, 300, 400, 500];

//配列のすべての要素にコールバック関数を適応
$value_array2 = array_map('valuecalc', $value_array);

//出力結果
Array
(
    [0] => 200
    [1] => 400
    [2] => 600
    [3] => 800
    [4] => 1000
)

9. array_rand

配列から要素をランダムに取得する

array_rand ( array $array ,$num )

第一引数に対象の配列
第二引数に取得したい要素の数

	// 配列を作成
	$queue = [ "a", "b", "c", "d", "e" ] ;

	// 配列から3つ要素を取得
	$result = array_rand( $queue, 3 ) ;

//出力結果
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(3)
  [2]=>
  int(4)
}

第一引数のみの場合はひとつだけキーを取得する
値ではないので注意

//配列
	$queue = [ "a", "b", "c", "d", "e" ] ;

	// 配列からランダムにひとつのキーを取得
	$result = array_rand( $queue ) ;
	
	//出力結果
	int(0)

10. array_chunk

配列を指定した要素の数ずつ分割する

array_chunk ( array $array , int $size [, bool $preserve_keys = false ] )

第一引数に対象の配列
第二引数に分割後の各配列の最大要素数
第三引数にキーが数値の場合保持するか。デフォルトでは保持しない。

// 配列
	$queue = [ "a", "b", "c", "d", "e" ] ;

	// 配列を分割
	$result = array_chunk( $queue, 2 ) ;
	
	//出力結果
	Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

11. array_column

多次元配列から特定カラムの配列を作る

array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

第一引数に対象の多次元配列
第二引数にキー名を指定、nullを指定した場合は配列全体を返す
第三引数に新しい配列の各要素のキー名となる、初期値はnull

	// 配列
	$queue = [
		[
			"date" => "2015/11/1" ,
			"score" => 100 ,
			"color" => "red" ,
		] ,
		[
			"date" => "2015/11/2" ,
			"score" => 75 ,
			"color" => "blue" ,
		] ,
		[
			"date" => "2015/11/3" ,
			"score" => 90 ,
			"color" => "green" ,
		] ,
	] ;

	// キーscoreを取得
	$result = array_column( $queue, "score" ) ;
	
	//出力結果
	Array
(
    [0] => 100
    [1] => 75
    [2] => 90
)

12. array_change_key_case

キー名の大文字、小文字を変換する

array_change_key_case ( array $array [, int $case = CASE_LOWER ] )

第一引数に対象の配列
第二引数に定数のCASE_UPPER(大文字)、またはCASE_LOWER(小文字)を指定
※指定しない場合は小文字変換

//配列
	$array = [
		"Syncer" => "good!" ,
		"Arayu" => "bad!" ,
	] ;

	// 小文字に変換
	$response = array_change_key_case( $array, CASE_UPPER ) ;
	
	//出力結果
		Array
(
		[SYNCER] => "good!" ,
		[ARAYU] => "bad!" ,
)
	

13. array_flip

配列のキーと値を反転する

array_flip ( array $array )

第一引数に対象の配列

	// 配列
	$queue = [
		"a" => "A" ,
		"b" => "B" ,
		"c" => "C" ,
	] ;

	// キーと値を反転する
	$result = array_flip( $queue ) ;
	
	//出力結果
	Array
(
    [A] => a
    [B] => b
    [C] => c
)
	

14. extract

キー名と同じ名前の変数を作る

extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] )

第一引数に対象の連想配列
第二引数にすでに変数が存在してい場合にどのような挙動をするかを指定
(別名保存する、上書きする等)
第三引数に第二引数の設定によりprefixを使用する場合指定

//重複する変数名
$c1 = 1;
$c2 = 1;

//配列
$ar1 = [
	'c1'=>'赤',
	'c2'=>'黄',
	'c3'=>'青'
	];

//変数名が重複した場合 'pre'を付与
extract($ar1,EXTR_PREFIX_SAME,"pre");

//出力結果
$pre_c1 = 
$pre_c2 = 
$c3 = 
4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4