【PHPで配列に追加】array_push,array_mergeなど?foreachで配列にkeyとして値を追加する

PHP

ミニマリスト_カミ

kamiです。
TwitterYoutubeもやってます。

みなさんPHPの知識はありますか?
この記事はarray_pushでの配列に値を追加、array_mergeで配列に配列を追加、array_unshiftで配列の先頭に値を追加、実務でも使える、foreachを使って配列keyとなる値を追加する技術の紹介です。

この記事でわかること

  • array_pushの使い方
  • array_mergeの使い方
  • array_unshiftの使い方
  • foreachでkeyの追加方法

この記事を最後まで読めば「array_push」「array_merge」「array_unshift」から「配列へのfoeeachでkeyとなる値を追加」の理解が深まりますので、最後まで読んで「PHP」についてマスターしましょう。

それでは順に見ていきましょう。

配列に追加する全体の流れ

icon

結論から言うと配列に追加する全体の流れは次の流れになります。

  • array_pushでの配列に値を追加する
  • arrqay_mergeで配列に配列を追加する
  • array_shiftで配列の先頭に値を追加する
  • 元となる値を用意するして(配列や連想配列)keyを追加する

array_pushで配列に追加する

array_pushで配列に追加する

array_pushでは配列の後ろに追加することができます。

  • 第一引数:追加する配列
  • 第二引数以降:追加したい値
$array = [];
// arry_pushで配列に追加
array_push(array, 'add_value1', 'add_value2');

至ってシンプルにarray_pushで配列に値を追加することがでいます。

array_pushの結果

echo $array
// ['add_value1', 'add_value2']

スポンサードサーチ

array_mergeで配列に配列を追加する

array_mergeで配列に配列を追加する

array_mergeは配列に配列を追加することができます。

  • 第一引数:追加する配列
  • 第二引数以降:配列に追加したい配列名
$array_1 = ['array_A', 'array_B']; 
$array_2 = ['array_C', 'array_D']; 
$array_3 = ['array_E', 'array_F']; 

// array_mergeで配列に配列を追加
array_merge($array3, array_1, array_2);

array_mergeの結果

echo $array3;
// ['array_E', 'array_F', 'array_A', 'array_B', 'array_C', 'array_D']

配列の値は左から順に出力できます。

array_unshiftで配列に追加する

array_unshiftで配列の先頭に追加する

  • 第一引数:追加する配列名
  • 第二引数以降:追加したい値

array_unshiftで配列に追加する

$array_1 = ['array_A', 'array_B']; 

// array_unshiftで配列の先頭に値を追加する
array_unshift($array_1, 'array_C', 'array_D');

array_unshiftの結果

echo $array_1

// ['array_C', 'array_D', 'array_A', 'array_B']

array_unshiftの第二引数の値が先頭になり、第一引数の配列名がunshiftの後に値が追加れます。

スポンサードサーチ

foreach中に配列にkeyを追加する

foreach中に配列にkeyを追加する

icon

実務的なテクニックを教えます。

// データ
$data['sample'] = 
{
	id:"1",
    createId:"1",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	deletedAt:null,
	createdAt:"2022-01-01 00:00:00",
	updatedAt:"2022-01-02 00:00:00"
}

// データ格納用の配列
$arrayData = [];

foreach($data['sample'] as $data) {
  // 空の配列に値と[]をループ中に追加することでキーを追加することができる
  $arrayData[$data['createId']][]= $data;
}


// 配列に格納
$data['sample'] = $arrayData;

連想配列をforeachでループして、ループ中に別の配列に格納していきます。

配列の結果

1:array {
 0:array {
	id:"1",
    createId:"1",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1",
	deletedAt:null,
	createdAt:"2022-01-01 00:00:00",
	updatedAt:"2022-01-02 00:00:00"
 }
}

ループ中に連想配列のkeyを指定することでkeyを追加しています。
keyの後に[]文字にすることに、下位の階層の影響なく取り出すことができます。

// 追加した値
1

連想列が複数の場合

// データ
$data['sample'] = 
{
	id:"1",
    createId:"1",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	deletedAt:null,
	createdAt:"2022-01-01 00:00:00",
	updatedAt:"2022-01-02 00:00:00"
}

{
	id:"2",
    createId:"2",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2",
	deletedAt:null,
	createdAt:"2022-01-02 00:00:00",
	updatedAt:"2022-01-03 00:00:00"
}

{
	id:"3",
    createId:"3",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx3",
	deletedAt:null,
	createdAt:"2022-01-03 00:00:00",
	updatedAt:"2022-01-04 00:00:00"
}

// データ格納用の配列
$arrayData = [];

foreach($data['sample'] as $data) {
  // 空の配列に値と[]をループ中に追加することでキーを追加することができる
  $arrayData[$data['createId']][]= $data;
}


// 配列に格納
$data['sample'] = $arrayData;

連想列が複数の場合の結果

1:array {
 0:array {
	id:"1",
    createId:"1",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1",
	deletedAt:null,
	createdAt:"2022-01-01 00:00:00",
	updatedAt:"2022-01-02 00:00:00"
 }
}

2:array {
 0:array {
	id:"2",
    createId:"2",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2",
	deletedAt:null,
	createdAt:"2022-01-02 00:00:00",
	updatedAt:"2022-01-03 00:00:00"
 }
}

3:array {
 0:array {
	id:"3",
    createId:"3",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx3",
	deletedAt:null,
	createdAt:"2022-01-03 00:00:00",
	updatedAt:"2022-01-04 00:00:00"
 }
}

元データが複数あれば、keyもそのように値を追加することができます。

foreach中に配列にkeyを追加する(わかりやすいバージョン)

foreach中に配列にkeyを追加する(わかりやすいバージョン)

// データ
$data['sample'] = 
{
	id:"1",
    createId:"1",
	uuid:"f8a950b9-d5ba-441d-81b4-84a42007ebc4",
	deletedAt:null,
	createdAt:"2022-01-01 00:00:00",
	updatedAt:"2022-01-02 00:00:00"
}

// データ格納用の配列
$arrayData = [];

foreach($data['sample'] as $key => $data) {
  // 空の配列に値と[]をループ中に追加することでキーを追加することができる
  $arrayData[$data['★']]['key'.$key]= $data;
}


// 配列に格納
$data['sample'] = $arrayData;

foreach中に配列にkeyを追加した(わかりやすいバージョン)結果

★:array {
 key0:array {
	id:"1",
    createId:"1",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1",
	deletedAt:null,
	createdAt:"2022-01-01 00:00:00",
	updatedAt:"2022-01-02 00:00:00"
 }
 key1:array {
	id:"2",
    createId:"2",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2",
	deletedAt:null,
	createdAt:"2022-01-02 00:00:00",
	updatedAt:"2022-01-03 00:00:00"
 }

 key2:array {
	id:"3",
    createId:"3",
	uuid:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx3",
	deletedAt:null,
	createdAt:"2022-01-03 00:00:00",
	updatedAt:"2022-01-04 00:00:00"
 }
}
icon

これだと初心者の方も分かりやすいんじゃないでしょうか?

連想配列に文字列として「★」を使い、その後に['key’.$key]としてkeyをidを結合しています。

foreach($data['sample'] as $key => $data) {
  // 空の配列に値と[]をループ中に追加することでキーを追加することができる
  $arrayData[$data['★']]['key'.$key]= $data;
}

スポンサードサーチ

まとめ

  • array_pushでの配列に値を追加できる
  • arrqay_mergeで配列に配列を追加できる
  • array_shiftで配列の先頭に値を追加できる
  • 配列にkeyを追加するして[]を追加すると、keyのみ追加ができる連想配列になる
  • 配列にkeyを追加するして[]をにkey追加すると、keyの後にkeyを追加できてその後に連想配列の階層になる

実装やエラーが解決できない場合

プログラミングの実装やエラーでどうしてもわからない場合はメンターに相談するのが一番です。

考えている、見えている範囲が狭くなり、解決から遠くに行って何時間も、何日も経っていることなんてよくある話です。

そういう時は聞ける先輩や、メンターに相談することが大事です。

僕にも相談可能なので気軽に相談してください。

Twitterからの連絡だと確実ですよ。

オンラインスクールやプログラミングスクールといったプログラミングを学べる方法もあるので、そちらもぜひ活用してもいいと思います。

Web開発で分からない時

オンライン完結型スクール DMM WEBCAMP PRO

アプリ開発で分からない時

プログラミング×稼げる副業スキルはテックキャンプ

プログラミングについて分からない時

【コエテコ様限定】※ご案内を受けた以外のメディアが使用しても成果は承認されません。
ミニマリスト_カミ

僕への個人でもメンターでも、スクールでもお好きな方を活用ください。

PHPPHP

Posted by kami