最近PHPのarray_mapを愛用しています。パフォーマンスはよくないものの個人的には読みやすいし、安全だと思うので、おすすめです。

配列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内は外からの影響が少ない)。