如何使用foreach为php中的类创建对象数组?

时间:2013-12-19 07:46:03

标签: php

我有像

这样的php类
class fiber {
   public $name
}
$array = array('1','2','3');

我需要为班级fiber

创建三个对象

我尝试了以下

foreach($array as $counts) {
   $obj = new fiber();
}

但它没有工作如何使用foreach

为类创建三个对象

3 个答案:

答案 0 :(得分:3)

你每次迭代都会覆盖$obj。相反,这样做:

$myArray = array();

foreach($array as $counts) {
   array_push($myArray, new fiber());
}

现在,您可以使用fiber等访问每个$myArray[0]

这是一个更完整和通用的示例(注意在PHP 5.4之前不支持使用[]。)

class Fiber {
  private $x;
  public function __construct($x) {
    $this->x = $x;
  }
  public function getX() {
    return $this->x;
  }
}

$x = [1,2,3];

$Fibers = [];

foreach($x as $v) {
  $Fibers[]= new Fiber($v);
}

echo $Fibers[0]->getX(); //1
echo $Fibers[1]->getX(); //2
echo $Fibers[2]->getX(); //3

我真的更喜欢$array[]= 'value'而不是array_push($array, 'value');

答案 1 :(得分:1)

这样您就可以用新的光纤类对象替换当前的数组值:

$array = array('1','2','3');

foreach($array as &$val) {
   $val = new fiber();
}

或者您可以跳过填充阵列的部分并执行以下操作:

$array = array();

for ($i = 0; $i < 3; $i++)
    $array[$i] = new fiber();

答案 2 :(得分:-1)

你可以这样做:

$index = 0;
foreach($array as $counts) {
   ${"obj$index"} = new fiber();
   $index++;
}

你将有三个对象$ obj0,$ obj1,$ obj2。