配列Aを配列Bに変換する場合はarray_map
を使うと便利:
<?php
class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
}
$a = ["ネズミ", "うさぎ", "ねこ"]; // 配列$aをAnimalインスタンスの配列$bに変換とする
// foreachを使う場合
$b = array(); // 省略可、推薦はしない
foreach ($a as $name) {
$b[] = new Animal($name);
}
// array_mapを使う場合:
$b = array_map(function($name) {
return new Animal($name);
}, $a);
var_dump($b);
/* 結果
array(3) {
[0] =>
class Animal#5 (1) {
protected $name =>
string(9) "ネズミ"
}
[1] =>
class Animal#6 (1) {
protected $name =>
string(9) "うさぎ"
}
[2] =>
class Animal#7 (1) {
protected $name =>
string(6) "ねこ"
}
}
*/
foreach
を使うと若干早い。array_map
のほうが関数型プログラミングっぽくて安全(Closure
内は外からの影響が少ない)。