PHP配列のまとめ

2022/04/21

PHPの勉強をはじめたばかりの人が最初につまづく箇所が 配列 です。

実際の業務でも配列を駆使してさまざまなコードを書くことになります。

ですので、ここをいい加減な感じで理解しておくと後々苦しむことになります。

今回はプログラムの根幹ともいえる配列についてまとめてみました。

 

INDEX

 

配列

配列の基本

PHP で配列を作成する方法は2パターンあります。

1)array() で作成する
2)[](角括弧)で作成する ※短縮構文 PHP5.4~

 

1)array() で作成する

# ----------------------------------
# array() で配列
# ----------------------------------
// 配列の初期化
// array() の引数を指定しない場合、空の配列が作成される
$framework = array();

// 配列に値を代入
// キーは0から順に 0,1,2 が割り振られる
$framework = array("Laravel", "Cake PHP", "Fuel PHP");

// 出力
print_r($framework);

配列の中身を確認したい場合は print_r など文字列を出力する関数を使用すると便利です。

 

実行結果:

 

2)[](角括弧)で作成する

# ----------------------------------
# [] で配列
# ----------------------------------
// 配列の初期化
$framework = [];

// 順番に値を代入
$framework = [ "Laravel", "Cake PHP", "Fuel PHP" ];

// 以下の書き方もOK
$framework[] = "Laravel";
$framework[] = "Cake PHP";
$framework[] = "Fuel PHP";

// 配列の出力
print_r( $framework );

 

実行結果:

 

配列の要素を指定して出力

// 配列 " framework " に値を代入
$framework = array("Laravel", "Cake PHP", "Fuel PHP");

// 要素を指定して出力
echo $framework[0];

 

実行結果:

 

配列を取り出す

繰り返し文である foreach文を使用して要素ごとに値を出力することもできます。


// 配列を作成
$framework = [ "Laravel", "CakePHP", "FuelPHP" ];

// 配列を順番に取り出す
foreach( $framework as $value ){
    // ※見やすいように後ろにスペースを入れています
    echo $value." ";
}

 

実行結果:

 

配列の要素を追加

配列に要素を追加する場合は[ ] (角括弧)を指定して $配列名[ ]='値' のように記述します。


// 配列の作成
$framework = ['Laravel', 'Cake PHP', 'Fuel PHP'];

// 最終要素のあとに追加(添え字配列の場合)
$framework[] = 'Zend Framework';
print_r($framework);

 

実行結果:

 

連想配列

連想配列の基本

配列ではキーを番号(自動的に割り当てられる添え字の番号)としていました。

連想配列ではこの「キー」に名前をつけることができます。

連想配列の作り方は3パターンあります。

・array関数
・「=>」を使う方法
・[] を使う方法

=>」はダブルアロー演算子と呼びます。

# ----------------------------------
# array() で連想配列
# ----------------------------------
// 「キー => 値」という形式をとる
$framework = array(
               'php' => 'Laravel',
               'ruby' => 'Rails',
                'javascript' => 'Jquery'
);

# ----------------------------------
# 「=>」で連想配列
# ----------------------------------
$framework = [
    'php' => 'Laravel',
    'ruby' => 'Rails',
    'javascript' => 'Jquery'
];

// キー、値には変数も使える
// 変数はダブルクォーテーションで囲む
$framework = [
    "$lang01" => 'Laravel',
    "$lang02" => 'Rails',
    "$lang03" => 'Jquery'
];


# ----------------------------------
#  [] で連想配列
# ----------------------------------
$framework["php"] = "Laravel";
$framework["ruby"] = "Rails";
$framework["javascript"] = "Jquery";

// 連想配列出力
print_r($framework);

 

実行結果:

 

連想配列を取り出す

以下のように foreach 文を使用して連想配列のキーと値を取り出します。

連想配列で foreach 文を使用する場合は foreach 文の条件式で「$配列変数名 as $キーを取得する変数 => $値を取得する変数」のように定義します。

// 連想配列作成
$framework = array(
    'php' => 'Laravel',
    'ruby' => 'Rails',
    'javascript' => 'Jquery'
);

// 連想配列を取り出す
foreach( $framework as $key => $value ){
    echo $value.'は'.$key.'のフレームワークです。
'; }

 

実行結果:

 

多次元配列

多次元配列の基本

配列の中にさらに複数の配列が入っているもの多次元配列といいます。


// 多次元配列 作成
$framework = [
   ['laravel' ,'Cake PHP' , 'Fuel PHP'],
   ['React' ,'Vue' , 'Angular'],
   ['Rails' ,'Sinatra',  'Cuba']
];

// 出力
print_r($framework);

 

実行結果:

実行結果からわかるように配列 $framework の各要素に1つの配列が格納されていることがわかります。

 

多次元配列の取り出し方

多次元配列の取り出し方は配列・連想配列と同様に繰り返し文(foreach文)を使います。


// 多次元配列 作成
$framework = [
    ['PHP', 'laravel' , 'Cake PHP' , 'Fuel PHP'],
    ['JavaScript', 'React', 'Vue', 'Angular'],
    ['Ruby', 'Rails', 'Sinatra', 'Cuba']
];

// 取り出す
foreach ($framework as $values){
    echo $values[0].'のフレームワーク:'.$values[1].'、'.$values[2].'、'.$values[3].'
'; }

 

実行結果:

$values には $framework の中の配列が格納されていますので、 $values[0] $values[1] $values[2] のように要素番号を指定することにより、配列の値を取得できます。

 

配列(応用編)

配列の値を検索(array_search)

array_search関数は指定した値を検索し、最初のキーを返します。

値が存在しなかったら FALSE を返します。


// 連想配列作成
$framework = [
               'laravel' => 'PHP',
               'rails' => 'Ruby',
                'jquery' => 'JavaScript'
];

// 検索
$key = array_search('PHP', $framework);
print_r($key);

 

実行結果:

 

配列の値を検索(in_array)

in_array 関数は配列の中に指定した値が存在する場合はTRUE。

未存在は FALSE を返します。


// 配列を作成
$php_framework = [ "Laravel", "Cake PHP", "Fuel PHP" ];

// 検索 その1
if (in_array('Laravel', $php_framework)) {
  echo ' Laravel は PHP のフレームワークです。';
}

// 検索 その2
if (in_array('Rails', $php_framework)) {
  echo ' Rails は PHP のフレームワークです。';
}

 

実行結果:

 

配列同士を結合(array_merge)

array_merge関数は配列同士を結合するときに使用します。


// 配列作成 その1
$php_framework = ['Laravel', 'Cake PHP', 'Fuel PHP'];

// 配列作成 その2
$ruby_framework = ['Rails', 'Sinatra', 'Cuba'];

// 配列の結合
$framework = array_merge($php_framework, $ruby_framework);

// 配列の中身を出力
print_r($framework);

 

実行結果:

 

配列に要素を追加(array_push)

array_push関数は配列の最後に要素を追加したいときに使用します。


// 配列の作成
$php_framework = ['Laravel', 'Cake PHP', 'Fuel PHP'];

// 配列に要素を追加
array_push($php_framework, 'ZendFramework', 'CodeIgniter');

print_r($php_framework);

 

実行結果:

 

配列の値を置換(array_replace)

array_push関数は配列の値を置換します。


// 配列作成
$php_framework = ['Laravel', 'Cake PHP', 'Ruby'];

// 置換
$replacement = ['2' => 'Fuel PHP'];
$php_framework = array_replace($php_framework, $replacement);

// 出力
print_r($php_framework);

 

実行結果:

 

配列を文字列で結合(implode)

array_push関数は、配列の値を文字列で結合するときに使用します。


// 配列作成
$php_framework_array = ['Laravel', 'Cake PHP', 'Ruby'];

// 配列の要素ごとに ' / ' で結合
$php_framework_string = implode('/', $php_framework_array);

// 出力
echo $php_framework_string;

 

実行結果:

 

文字列を分割して配列へ(explode)

array_push関数は、配列の値を文字列で結合するときに使用します。


// 文字列
$php_framework_string = "laravel, CakePHP, FuelPHP";

// " , " (カンマ)で分割 → 配列
$php_framework_array = explode(',', $php_framework_string);

// 出力
print_r($php_framework_array);

 

実行結果:

 

配列の削除(unset)

・配列を指定して、unset() で削除します。
・unset() で削除するだけだと、キー(添え字)が変更されないので array_values で キー(添え字)を詰めます。


// 配列の作成
$php_framework = ['Laravel', 'Cake PHP', 'Fuel PHP'];

// 添え字1番(Cake PHP)削除実行
unset($php_framework[1]);

// 出力 その1
print_r($php_framework);

// キー(添え字)を詰める
$php_framework = array_values($php_framework);

// 出力 その2
print_r($php_framework);

連想配列の削除も同様に key を用いて削除します。

 

実行結果:

 

配列の要素数を確認(count)


// 配列作成
$framework = [ "Laravel", "Cake PHP", "Fuel PHP" ];

// 配列の要素数確認
echo count($framework);

 

実行結果:

 

配列が空かチェック(empty)

empty()関数 は主にif文と一緒に使われます。

もし $変数 または $配列 が empty の時に処理するというように書いていきます。

empty()関数は $変数 または $配列 が null の時は TRUE
isset()関数は $変数 または $配列 が null の時は FALSE と判断してくれます。

// 配列宣言
$array = [];

if(empty($array)){ // 配列は空なので返り値はTRUE
  echo '$array は空です。';
}

 
以上です。

PHP おススメ教材(by Udemy)

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-周辺知識