在数组声明中实例化类

时间:2011-12-14 02:39:05

标签: php arrays class

我道歉,我已经涉足了一些PHP,但直到现在都没有做过任何严肃的事情。

基本上,我有类似的东西:

class MyClass
{
    function _construct($var1, $var2)
    {
        //property assignments
    }
}

function doStuff($array)
{
    //do stuff to $array
}

$myArray = array();
$myVar1 = "foo";
$myVar2 = "bar";
$myVar3 = "test"
$myVar4 = "aaaaa"
//etc...

我想要做的是创建MyClass的实例并将其存储到$myArray。我知道我可以做到以下几点:

$classInstance = new MyClass($myVar1, $myVar2);
$myArray[] = $classInstance
$anotherInstance = new MyClass($myVar3, $myVar4);
$myArray[] = $anotherInstance
//etc...

此过程将按顺序多次(无循环)完成。一旦我多次这样做,我将做以下事情:

doStuff($myArray);

在这个函数中,我将使用foreach等循环。这将是乏味的。我想知道的是,有什么方法可以做(像我知道这不是正确的语法):

$myArray[] = new MyClass($myVar1, $myVar2);
$myArray[] = new MyClass($myVar3, $myVar4);
//etc...

doStuff($myArray);

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

$myArray = array(
    new MyClass('foo', 'bar'),
    new MyClass('test', 'aaaaa')
);

答案 1 :(得分:0)

语法$myArray[] = new MyClass($myVar3, $myVar4);已经有效。您可以按照自己的意愿行事:

$arr = array();
$arr[] = new stdClass;
$arr[] = new stdClass;
$arr[] = new stdClass;
$arr[] = new stdClass;
$arr[] = new stdClass;

var_dump($arr);
array(5) {
  [0]=>
  object(stdClass)#1 (0) {
  }
  [1]=>
  object(stdClass)#2 (0) {
  }
  [2]=>
  object(stdClass)#3 (0) {
  }
  [3]=>
  object(stdClass)#4 (0) {
  }
  [4]=>
  object(stdClass)#5 (0) {
  }
}