3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

株式会社デジタルクエスト エンジニアAdvent Calendar 2019

Day 11

PHPの便利な配列関数

Last updated at Posted at 2019-12-16

##はじめに
PHPの配列操作で、個人的によく使っている関数などを書きます。

##配列への変換
###String→Array

test.php
<?php
	$foo_string = 'aaa,bbb,ccc';
	$foo_array = explode(',', $foo_string);

	var_dump($foo_string);          
    // string 'aaa,bbb,ccc' 

	var_dump($foo_array);
    // array(size=3) 
    //   0 => string 'aaa' 
    //   1 => string 'bbb'
    //   2 => string 'ccc'

implode()を使うと、Array→String の逆変換ができます。

###Object→Array

test.php
<?php
	$foo_obj = new stdClass();
	$foo_obj->key = 'val';
	$foo_array = json_decode(json_encode($foo_obj), true);

	var_dump($foo_obj);
    // object(stdClass) 
    //   public 'key' => string 'val'

	var_dump($foo_array);    
    // array(size=1) 
    //   'key' => string 'val'

Array型へのキャストやget_object_vars()での配列変換では、ネストしたオブジェクトを配列化してくれないので、
多少読みづらくてもjson_encode()を使って変換したいです。

##配列内の検索
###配列に値があるか

test.php
<?php
	$foo = ['1' => 'aaa', '2' => 'bbb', '3' => 'ccc'];
	$bar = 'bbb';
	$is_exists = in_array($bar, $foo, true);

	var_dump($is_exists);
	// boolean true

in_array()の第3引数をtrueにすると、厳密な型比較をします。

###配列のキーに値があるか

test.php
<?php
	$foo = ['1' => 'aaa', '2' => 'bbb', '3' => 'ccc'];
	$bar = '2';
	$is_exists = array_key_exists($bar, $foo);

	var_dump($is_exists);
	// boolean true

##配列の整形
###配列から単一のカラムの配列を生成

test.php
<?php
	$foo = [
		[
	        'name' => 'aaa',
	        'gender' => 'man',
		],
		[
	        'name' => 'bbb',
	        'gender' => 'male',
		],
		[
	        'name' => 'ccc',
	        'gender' => 'man',
		],
	];
	$bar = array_column($foo, 'name');

	var_dump($bar);
	// array (size=3)
    // 0 => string 'aaa'
    // 1 => string 'bbb'
    // 2 => string 'ccc'

例示しているのはかなり単純な例ですが、第3引数の設定などをするとかなり柔軟に配列を生成可能です。

###配列の結合

test.php
<?php
	$foo = ['aaa' => 'bbb'];
	$bar = ['ccc' => 'ddd'];
	$merged_array = array_merge($foo, $bar);

	var_dump($merged_array);
    // array (size=2)
    // 'aaa' => string 'bbb' 
    // 'ccc' => string 'ddd' 

##さいごに
PHPは配列の関数が数多く用意されているので、配列を扱うのが楽しいです。
その他の配列関数については、公式のリファレンスをご参照下さい。
https://www.php.net/manual/ja/ref.array.php

3
0
0

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?