2011-12-14 5 views
1

Прошу прощения, я пробовал с некоторым 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); 

Любая помощь будет оценена. Благодаря!

+3

На самом деле, '$ туАггау [] = новый MyClass ($ MyVar1, $ myVar2);' вполне допустимо. –

+1

Почему '$ myArray [] = новый MyClass ($ myVar1, $ myVar2);' не является правильным синтаксисом? – xdazz

+0

О, спасибо. Я не понимал, что это правильный синтаксис. –

ответ

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) { 
    } 
} 
+0

Спасибо, ребята, за вашу помощь. Я не знал, что ты можешь это сделать. Еще одна причина, по которой мне действительно нравится PHP. –

0
$myArray = array(
    new MyClass('foo', 'bar'), 
    new MyClass('test', 'aaaaa') 
); 
Смежные вопросы