忘れたら読みたいPHPのArray(配列)文法・メソッド・使い方まとめ

eyecatch_template
書いた人 須田 博

よく忘れるPHPのArray(配列)に関する文法・メソッド・使い方についてまとめました。

基本形(リテラル)

変数は 名前をつけた1つの入れ物に1つの数値や文字などを入れて使用します。

[code]$sports =  "野球"[/code]

PHPのArray(配列)の場合は、この変数が複数格納できるものとなります。

基本構文

配列は、[]で囲み、カンマ「,」区切りで記述します。

配列には、任意のオブジェクト型を要素としてもつことが可能です。

配列 は、 array() で作成します。 特定の数のカンマで区切られた

キー => 値 の組を引数とします。

[code]$配列変数名 = array(
    key1 => value1,
    key2 => value2,
    key3 => value3,
    …
)[/code]

添字配列(キーが整数)と連想配列(キーが文字列)

PHP においては「添字配列(キーが整数)」と「連想配列(キーが文字列)」の

2通りの指定方法があります。(混在も可能です)

・添字配列

キーは0から順に0,1,2が割り振られる

[code]$sports = array(
‘Baseball’,
‘Badminton’,
‘Basketball’
);[/code]

・連想配列

[code]$sports = array(
‘Baseball’=>’野球’,
‘Badminton’=>’バドミントン’,
‘Basketball’=>’バスケットボール’
);[/code]

array()省略形

PHP 5.4 以降では array() の省略形として []が使えるようになりました。

[code]$sports = [
‘Baseball’=>’野球’,
‘Badminton’=>’バドミントン’,
‘Basketball’=>’バスケットボール’
];[/code]

多次元配列

[code]
// array の内部にarrayを保持することができます。
$array = array(
‘fruits’=>array(
‘a’=>’orange’,
‘b’=>’banana’
),
‘kakaku’=>array(
100,
200
)
);
print_r($array);
[/code]

出力結果

[code]
Array [fruits] => Array (
                [a] => orangem
                [b] => banana )
                [kakaku] => Array  (
                        [0] => 100,
                        [1] => 200
        )
)[/code]

基本的な使い方

要素の取得

[code]
$sports = array(
        ‘野球’,
        ‘バドミントン’,
        ‘バスケットボール’
);
echo $sports[2];
[/code]

出力結果

[code]
バスケットボール
[/code]

[code]
$sports = array(
‘Baseball’=>’野球’,
‘Badminton’=>’バドミントン’,
‘Basketball’=>’バスケットボール’
);
print_r ($sports[ ‘Badminton’]);
[/code]

出力結果

[code]
バドミントン
[/code]

要素の追加

[code]
// 最終要素の後に追加(添字配列の場合)
$sports = array(
‘野球’,
‘バドミントン’,
‘バスケットボール’
);
$sports[] = ’バレーボール’:
print_r($sports);
[/code]

出力結果

[code]
Array (
     [0] => 野球,
     [1] => バドミントン,
     [2] => バスケットボール,
     [3] => バレーボール
);
[/code]

[code]
// 最終要素の後に追加(連想配列の場合)
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’
);
$sports[] = array(
     ‘Volleyball’ => ‘バレーボール’
):
// $sports[‘Volleyball’] = ‘バレーボール’:    でもOKです。
print_r($sports);
[/code]

出力結果

[code]
Array(
     [Baseball] => 野球,
     [Badminton] => バドミントン,
     [Basketball] => バスケットボール,
     [Volleyball] => バレーボール
)
[/code]

要素の更新

[code]
// 2番目の要素の値を更新(添字配列の場合)
//     ※indexは0より開始に注意
$sports = array(
     ‘野球’,
     ‘バドミントン’,
     ‘バスケットボール’
);
$sports[1] = ’羽付き’:
print_r($sports);
[/code]

出力結果

[code]Array(
     [0] => 野球,
     [1] => 羽付き,
     [2] => バスケットボール
)[/code]
[code]// Keyより値変更(連想配列の場合)
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’
);
$sports[ ‘Badminton’] = ’羽付き’;
print_r($sports);
[/code]

出力結果

[code]Array
(
     [Baseball] => 野球,
     [Badminton] => 羽付き,
     [Basketball] => バスケットボール
)[/code]

要素の削除

特定のキー/値の組を削除したい場合には、unset() を使用します。

[code]// 2番目の要素を削除(添字配列の場合)
$sports = array(
     ‘野球’,
     ‘バドミントン’,
     ‘バスケットボール’,
‘バレーボール’
);
unset($sports[1]);
print_r($sports);[/code]

出力結果

[code]Array
(
     [0] => 野球,
     [1] => バスケットボール,
     [2] => バレーボール
)[/code]
[code]// Keyより要素削除(連想配列の場合)
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’,
     ‘Volleyball’=>’バレーボール’
);
unset($sports[ ‘Badminton’]);
print_r($sports);[/code]

出力結果

[code]Array(
     [Baseball] => 野球,
     [Basketball] => バスケットボール,
     [Volleyball] => バレーボール
)[/code]

要素数の取得

[code]$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’
);
print_r(count($sports));
[/code]

出力結果

[code]3[/code]

よく使う関数

検索(array_search,in_array,array_keys,array_key_exists)

[code]//  array_search関数
//   指定した値を配列で検索し最初のキーを返す。
//   未存在はFALSEを返却する
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’
);
$key = array_search(‘バスケットボール’);
print_r($key);
$key = array_search(‘卓球’);
print_r($key);
[/code]

出力結果

[code]
Basketball
False[/code]
[code]
//  in_array関数
//   配列の中に指定した値が存在する場合はTRUE。未存在はFALSEを返します。
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’
);
$key = in_array(‘バスケットボール’);
print_r($key);
$key = in_array(‘卓球’);
print_r($key);
[/code]

出力結果

[code]
TRUE
FALSE
[/code]
[code]
//  array_keys関数
//   array_search() との違いは、重複した値があった場合でも
//    全てのキーを配列にして返却。
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’,
     ‘miniBasketball’=>’バスケットボール’
);
$keyArray = array_search(‘バスケットボール’);
print_r($keyArray);
[/code]

出力結果

[code]
Array(
     [Basketball] => バスケットボール,
     [miniBasketball] => バスケットボール
)
[/code]
[code]
//  array_key_exists関数
//   指定したキーまたは添字が配列にあるかどうかを調べる関数
$sports = array(
     ‘Baseball’=>’野球’,
     ‘Badminton’=>’バドミントン’,
     ‘Basketball’=>’バスケットボール’
);
$key = array_key_exists(‘Badminton’);
print_r($key);
$key = array_key_exists(‘gateBall’);
print_r($key);
[/code]

出力結果

[code]
TRUE
FALSE
[/code]

結合(array_merge,array_merge_recursive,array_push)

[code]
// array_merge()関数
//   特徴)・キーが文字列なら値が上書きされる
//           ・キーが数値なら値は上書きされず、添字番号が振り直される
//           ・添字配列の添字番号は「値が小さい順」ではなく「宣言された順」
$array1 = array(‘color’=>’red’, 10=>1, 0=>2);
$array2 = array(‘a’, ‘b’, ‘color’=>’green’, 3);
$array = array_merge($array1, $array2);
print_r($array);
[/code]

出力結果

[code]
Array (
[color] => green,
    [0] => 1,
    [1] => 2,
    [2] => a,
    [3] => b,
    [4] => 3
)
[/code]
[code]
// array_merge_recursive関数
//    array_merge()関数と比べキーが文字列なら値が上書きされない。
//     Arrayとして格納される点が異なる。
$array1 = array(‘color’=>’red’, 10=>1, 0=>2);
$array2 = array(‘a’, ‘b’, ‘color’=>’green’, 3);
$array = array_merge_recursive($array1, $array2);
print_r($array);
[/code]

出力結果

[code]
Array (
[color] => Array (
        [0] => red,
        [1] => green
    )
    [0] => 1,
    [1] => 2,
    [2] => a,
    [3] => b,
    [4] => 3
)[/code]
[code]// array_push()関数
//   要素内にarrayとして追加される
$array1 = array(‘color’=>’red’, 10=>1, 0=>2);
$array2 = array(‘a’, ‘b’, ‘color’=>’green’, 3);
$array = array_push($array1, $array2);
print_r($array);
[/code]

出力結果

[code]Array (
     [color] => red,
     [10] => 1,
     [0] => 2,
     [11] => Array (
           [0] => a,
           [1] => b,
           [color] => green,
           [2] => 3
    )
)
[/code]

置換(array_replace)

配列要素の結合とは少し異なり、存在すれば置き換え、未存在は追加される

[code]//  array_replace
$sports = array(
‘Baseball’=>’野球’,
‘Badminton’=>’バドミントン’,
‘Basketball’=>’バスケットボール’
);
$newSport = array(
Badminton’ => ‘バド’,
‘pickleball’ => ’ピックルボール’
);
$sports = array_replace($sports, $newSport);
print_r($sports);[/code]

出力結果

[code]Array (
[Baseball] => 野球, 
[Badminton] => バド,
[Basketball] => バスケットボール,
[Volleyball] => バレーボール,
[pickleball] => ピックルボール
)
[/code]

取り出し(foreach)

配列の要素のキーと値を取り出して処理したい場合のサンプルです。

[code]// foreach による 連想配列のキーと値を取得する。
$sports = array(
‘Baseball’=>’野球’,
‘Badminton’=>’バドミントン’,
‘Basketball’=>’バスケットボール’
);
foreach ($sports as $key => $value) {
echo "英語(キー): " . $key . " は日本語(値):"  . $value . "  です\n"
}
[/code]

出力結果

[code]英語(キー):Baseball は日本語(値):野球 です
英語(キー):Basketball は日本語(値):バスケットボール です
英語(キー):Volleyball は日本語(値):バレーボール です
[/code]

ソート(sort,ksort,krsort,asort,krsort)

[code]
// sortメソッドによる昇順ソート rsortは降順
$numVal = array(100,35,77,1,5);
sort($numVal);
print_r(count($sports));
[/code]

出力結果

[code]
Array (
[0] = 1,
[1] = 5,
[2] = 35,
[3] = 77,
[4] =100
)
[/code]

※主に連想配列のソート関数としては下記がよく使用されます。

  • ksort・・・キーとデータの関係を維持しつつ、配列をキーで昇順ソートする。
  • krsort ・・キーとデータの関係を維持しつつ、配列をキーで降順ソートする。
  • asort・・・キーとデータの関係を維持しつつ、配列を値で昇順ソートする。
  • krsort・・・キーとデータの関係を維持しつつ、配列を値で降順ソートする。

フィルタリング(array_filter 関数)

コールバック関数を使用して、配列の要素をフィルタリングする

[code]
// くだものの配列
$fruits = array(
‘orange’ => 100,
‘banana’   => 200,
‘apple’ => 150
);
// フィルターの閾値をセット
$filter_age = 150;
/*
* フィルターの条件(無名関数)をセット
* 関数のリターン値が true 場合、フィルタリング後の結果セットに格納される
*/
$fruits_func = function ($value) use ($filter_age) {
return ($value >= $filter_age);
};
$result = array_filter($fruits, $fruits_func);
print_r($result);
[/code]

出力結果

[code]
Array (
banana   => 200,
apple => 150
)
[/code]

参考書籍

関連記事

ご紹介

自分にプログラミングなんて・・・と思っていませんか?

今後10年間で今ある職業の『77%』はなくなると言われています。

人工知能や機械学習を筆頭にVR、AR、ドローンなどの最先端技術の発達はこれからのあなたの働き方に間違いなく影響を与えるでしょう。

将来を見据えてプログラミングができるようになってエンジニアになりたい、自分だけにしかできないクリエイティブな仕事がしたい、、、とお考えの方も少なくないでしょう。

と、同時に「難しそう、、自分にはできないだろう、、、」と諦めている方も多いのではないでしょうか。

弊社マンツーマンレッスンは、お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、オリジナルアプリ開発や、フリーランスとしての仕事獲得まで支援しています。

まずは『無料体験レッスン』で弊社コンサルタントと一緒にあなた専用の学習カリキュラムを考えてみてはいかがでしょうか?

詳しくは下の画像をクリックしてください。

cta_mtm2

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題、最短1ヶ月でフリーランスエンジニア
月額たったの2980円で質問し放題!驚きの新サービス登場
プログラミング学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

須田 博

SEキャリアは34年以上、開発言語は多彩だがJavaは私の基本言語であり、 メジャーになる前の1999年より実務開発。開発実績は大手企業様が多いが製品開発経験やインフラ構築経験もあり。言語は大工のカンナなど大工道具のようなものであり、使う人の技量によって速さ(生産性)と品質は変わるものというスタンスでやってきました。
趣味は「車の電飾系改造」と「バドミントン」と「アニメ」と「猫のわかちゃん」です。
ビデオ溜めしたアニメは2倍速で一気に鑑賞という特技あります。