(PHP)2D Array第一个元素作为索引的“名称”

时间:2011-03-29 20:28:41

标签: php arrays csv header multidimensional-array

简单地说,我需要取一个数组的第一列并将其转换为命名数组,在单个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

我开始编写标识符以执行相同的操作($ name = 0,$ version = 1等),但 165列!因此,自动化将变得更加容易,我有兴趣一如既往地学习新事物!

4 个答案:

答案 0 :(得分:2)

如果我理解正确,你不想写出所有的标题吗?也许你可以做类似这段代码的事情:

我刚刚假设了输入数组的格式,您可能需要稍微更改一下:

$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 :(得分:2)

$ 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 :(得分:1)

好的,你做的是:

$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/>';
}

答案 3 :(得分:1)

我想你想要像这样做你的数组:

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

然后您可以像这样访问它:

$currentName = $arr[0]['name'];
$currentVersion = $arr[0]['version'] //...etc