2012-04-03 3 views
0

Допустим, мне нужны три массива, ford, chevy и dodge. Каждый массив имеет три элемента:Как назвать эти массивы PHP?

$ford['engine'] = 'something'; 
$ford['color'] = 'something'; 
$ford['price'] = 'something'; 

$chevy['engine'] = 'something'; 
$chevy['color'] = 'something'; 
$chevy['price'] = 'something'; 

$dodge['engine'] = 'something'; 
$dodge['color'] = 'something'; 
$dodge['price'] = 'something'; 

Я могу написать это без проблем, и это не займет слишком много времени. Но, скажем, мне нужно пятьдесят или шестьдесят массивов, которые мне нужно сделать, и все от десяти до двадцати разных предметов. Я хочу поместить переменную в верхнюю часть каждого файла массива, чтобы обозначить, каким будет имя массива, но я не совсем понятен в синтаксисе, и я не слишком хорошо знаком с $$ или как я буду использовать это с массивами:

$name = 'ford'; 

$(I want this to be "$name")['engine'] = 'something'; 
$(I want this to be "$name")['color'] = 'something'; 
$(I want this to be "$name")['price'] = 'something'; 

Я также рассмотрели только как это сделать:

$name = 'ford'; 

$view[$name.'_engine'] 
$view[$name.'_color'] 
$view[$name.'_price'] 

Могу ли я получить некоторые предложения на лучший способ приблизиться к этому?

ответ

5

Написать небольшую функцию, чтобы сделать это

$cars = array(); //Create an array to hold the values  
function writeArray($car, $var1, $var2, $var3) { 
    global $cars; 
    $cars[$car] = array('engine' => $var1, 'color' => $var2, 'price' => $var2); 
} 
//Now use it like 
writeArray('Chevy', $something, $something, $something); 

//If you want to access the array in the form of $ford['engine'] then use this 

extract($cars); //This will split the array into small array accessible by model 
+2

+1 за рекомендацию, что все идет в $ автомобилей. Хотя переменные переменные - забавный мысленный эксперимент, они редко бывают хорошей идеей. – ghoti

+0

почему это правда? Почему это плохая идея? – absentx

+0

@absentx, Потому что, вы позволяете в основном аномалию, чтобы получить простую вещь для работы. И кроме того, он не дает такой большой перемены, как тот, который вы уже используете. – Starx

4

Вы можете использовать variable variables:

$var = 'ford'; 
$$var['engine'] = '...'; 
$$var['color'] = '...'; 

$var = 'chevy'; 
$$var['engine'] = '...'; 
$$var['color'] = '...'; 

Или просто использовать многомерный массив:

$cars = array(); 

$make = 'ford'; 
$cars[$make] = array(); 
$cars[$make]['engine'] = '...'; 
$cars[$make]['color'] = '...'; 

// or 

$cars['ford'] = array(
    'engine' => '...', 
    'color' => '...', 
); 
+0

Это не дает кодового рычага. Это сокращает его, но все еще много места. – Starx

+0

Как определить двигатель и цвет для каждого элемента в каждом для каждого цикла. Это приводит к беспорядочному решению -1; – Starx

Смежные вопросы