【PHP】配列おさらい〜連想配列の編集と代入編
前回記事の続きです。
使用する配列
こちらのサイトから拝借。(少し編集しました。)
test.php
$col_1 = array(
'id' => 1,
'name' => 'Bill',
'age' => 33,
'country' => 'America',
);
$col_2 = array(
'id' => 2,
'name' => 'Chris',
'age' => 54,
'country' => 'Canada',
);
$collection = array(
array(
'id' => 1,
'name' => 'Bill',
'age' => 33,
'country' => 'America',
),
array(
'id' => 2,
'name' => 'Chris',
'age' => 54,
'country' => 'Canada',
),
array(
'id' => 3,
'name' => 'Bert',
'age' => 42,
'country' => 'America',
),
array(
'id' => 4,
'name' => 'Taro',
'age' => 33,
'country' => 'Japan',
),
);
test.php
print_r($col_1);
/* 結果
Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
*/
print_r($col_2);
/* 結果
Array
(
[id] => 2
[name] => Chris
[age] => 54
[country] => Canada
)
*/
print_r($collection);
/* 結果
Array
(
[0] => Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
[1] => Array
(
[id] => 2
[name] => Chris
[age] => 54
[country] => Canada
)
[2] => Array
(
[id] => 3
[name] => Bert
[age] => 42
[country] => America
)
[3] => Array
(
[id] => 4
[name] => Taro
[age] => 33
[country] => Japan
)
)
*/
特定のキーごとに連想配列をまとめる
特定のキー(ここではcountry)ごとに配列をまとめます。
これは自分で解決できず、Google先生に頼ることに。以下の記事に救われました。
test.php
$country_group = array();
foreach ($collection as $key => $value) {
$c_name = $value['country'];
if (!isset($country_group[$c_name])) {
$country_group[$c_name] = array();
}
$country_group[$c_name][] = $value;
}
print_r($country_group);
/* 結果
Array
(
[America] => Array
(
[0] => Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
[1] => Array
(
[id] => 3
[name] => Bert
[age] => 42
[country] => America
)
)
[Canada] => Array
(
[0] => Array
(
[id] => 2
[name] => Chris
[age] => 54
[country] => Canada
)
)
[Japan] => Array
(
[0] => Array
(
[id] => 4
[name] => Taro
[age] => 33
[country] => Japan
)
)
)
*/
連想配列を要素とする配列を作る
配列名[]で代入する
[]
を忘れると上書きされてしまいます。
test.php
$col_0 = array();
$co1_0[] = $col_1;
$co1_0[] = $col_2;
print_r($co1_0);
/* 結果
Array
(
[0] => Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
[1] => Array
(
[id] => 2
[name] => Chris
[age] => 54
[country] => Canada
)
)
*/
foreach文で回す場合
上書きされるのではと思ったら、自動的に$collection_2
の添字のカウントが進んでいく模様。
test.php
$collection_2 = array();
foreach ($collection as $key => $value) {
$collection_2[$key] = $value;
}
print_r($collection_2);
/* 結果
Array
(
[0] => Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
[1] => Array
(
[id] => 2
[name] => Chris
[age] => 54
[country] => Canada
)
[2] => Array
(
[id] => 3
[name] => Bert
[age] => 42
[country] => America
)
[3] => Array
(
[id] => 4
[name] => Taro
[age] => 33
[country] => Japan
)
)
*/
array_pushを使用する
前回の記事でも紹介しました。
空でない配列
に追加しようとすると、連想配列ではキーと要素のバランスがおかしくなってしまいます・・・
配列に配列を代入する
配列名 = 配列名
元の配列と全く同じ形です。
test.php
$retcol_1 = $col_1;
print_r($retcol_1);
/* 結果
Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
*/
配列名[] = 配列名
配列自体が1つの要素として扱われます。
test.php
$retcol_2[] = $col_1;
print_r($retcol_2);
/* 結果
Array
(
[0] => Array
(
[id] => 1
[name] => Bill
[age] => 33
[country] => America
)
)
*/
次回に続きます。
Author And Source
この問題について(【PHP】配列おさらい〜連想配列の編集と代入編), 我々は、より多くの情報をここで見つけました https://qiita.com/yukibe/items/8c84a7fd4ceca3260bca著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .