(PHP) 2D-массив Первый элемент в качестве «имени» для индекса - PullRequest
2 голосов
/ 30 марта 2011

Проще говоря, мне нужно взять первый столбец массива и превратить его в именованный массив, несколько раз в пределах одного 2d массива.

$ arr [0] [0] = "Имя"$ arr [1] [0] =" Версия "... и т. д., что позволяет мне затем обращаться к ним как: $ arr [" Имя "] [1] =" Боб "$ arr [" Версия "] [1]= "1.00"

Как назначить имена переменных для индекса?Если это имеет смысл.Я не знаю правильных терминов для такого рода вещей ... Или, по крайней мере, не знаю, как их использовать.

В любом случае, фактический массив выглядит так:

Name,Version,Compact,OpenGFx
Element1,1.0,0,0,1
Element2,1.23,0,0,1
ElementN,1.0,0,0,1

Iначал писать идентификаторы, чтобы сделать то же самое ($ name = 0, $ version = 1 и т. д.), но есть 165 столбцов !Так что автоматизация была бы намного проще, и я, как всегда, заинтересован в изучении новых вещей!

Ответы [ 4 ]

2 голосов
/ 30 марта 2011

$ array = array ();

// add your values to the last index
$array['Name'][] = 'Counter Strike';
$array['Version'][] = '1.6';
$array['Name'][] = 'Bob';
$array['Version'][] = '1.0';

// display results
echo $array['Name'][0]; // Counter Strike
echo $array['Version'][0]; // 1.6
echo $array['Name'][1]; // Bob
echo $array['Version'][1]; // 1.0


// sexier way
$element1 = array('Name' => 'Counter Strike', 'Version' => '1.6');
$element2 = array('Name' => 'Bob', 'Version' => '1.0');

// add the element
$array[] = $element1;
$array[] = $element2;
// or
array_push($array, $element1);
array_push($array, $element2);

// display with a loop
foreach ($array as $element) {
    echo $element['Name'];
    echo $element['Version'];
}

// or
echo $array[0]['Name']; // Counter Strike
echo $array[1]['Name']; // Bob
2 голосов
/ 30 марта 2011

Если я правильно понимаю, вы не хотите писать все заголовки правильно?Может быть, вы могли бы сделать что-то похожее на этот код:

Я только что предположил формат входного массива, вам может понадобиться немного изменить его:

$input = array(
    array('name', 'version', 'compact'), // and so on
    array('element1', 1.0, 0),
    array('element2', 1.3, 1) // and so on
);

$headings = array_shift($input);

$output = array();
foreach ($input as $row) {
    $newrow = array();
    foreach ($headings as $index => $name) {
        $newrow[$name] = $row[$index];
    }
    $output[] = $newrow;
}

var_dump($output);
1 голос
/ 30 марта 2011

Я думаю, что вы хотите сделать свой массив следующим образом:

$arr[] = array("name" => "nameValue"
                , "version" => 1
                , "compact" => 0 ) //...etc

тогда вы можете получить к нему доступ так:

$currentName = $arr[0]['name'];
$currentVersion = $arr[0]['version'] //...etc
1 голос
/ 30 марта 2011

хорошо, что вы делаете:

$arr = array();
$arr['NAME'] = array();
$arr['VERSION'] = array(); //and so on

//to add to the array:

$arr['NAME'][] = 'john';
//or
$arr['NAME'][0] = 'john';
//etc etc

И затем, чтобы напечатать все имена (например), вы можете сделать:

foreach($arr['NAME'] as $name){
   echo $name.'<br/>';
}
...