【问题标题】:(PHP) 2D Array first element as "name" for the index(PHP)二维数组第一个元素作为索引的“名称”
【发布时间】:2011-07-25 14:41:51
【问题描述】:

简单地说,我需要获取数组的第一列并将其转换为命名数组,在单个二维数组中多次重复。

$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 列!所以自动化会容易得多,而且我有兴趣一如既往地学习新事物!

【问题讨论】:

    标签: php arrays csv header multidimensional-array


    【解决方案1】:

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

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

    $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);
    

    【讨论】:

    • 是的,你成功了!很好的例子,它应该很容易适合我的脚本。
    【解决方案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
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

        好吧,你要做的是:

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

        【讨论】:

        • 我明白了,但是如果数组已经存在,我可以给已经定义的数组命名吗?这就是我面临的困境。
        猜你喜欢
        • 1970-01-01
        • 2020-02-16
        • 2019-05-08
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 2020-03-09
        • 1970-01-01
        • 2021-06-04
        相关资源
        最近更新 更多