将CSV标头传递到PHP数组的下拉菜单中

时间:2013-06-27 09:10:14

标签: php arrays csv drop-down-menu

我正在尝试获取CSV文件的第一行,并在单个下拉菜单中显示这些字段。

CSV(users.csv)如下所示:

Email,Firstname,Lastname
test@test.com,Test,Testerson
test1@test.com,Test1,Testerson1
test2@test.com,Test2,Testerson2
test3@test.com,Test3,Testerson3

我已经将第一行传递给了一个包含以下代码的数组。

<?php
 if(($handle = fopen("users.csv", "r")) !== FALSE)
    {
        $arrHeader[] = fgetcsv($handle, 0, ",");
    }       
print_r ($arrHeader);
?>

我现在想将该数组传递到单个下拉菜单中,因此菜单上的唯一选项是Email,Firstname和Lastname。

当我尝试将这些值直接传递到菜单中时,显然我收到转换错误。

非常感谢任何帮助。

感谢。

编辑:

我已经尝试了以下内容,并遇到了Array to String转换错误。

<?php
 if(($handle = fopen("users.csv", "r")) !== FALSE)
    {
        $arrHeader[] = fgetcsv($handle, 1000, ",");
    }   
foreach($arrHeader as $arr1)
    {
        echo '<option value = "' . $arr1. '">' . $arr1 . '</option>';
    }  
?>

2 个答案:

答案 0 :(得分:1)

你的阵列将是
数组([0] =&gt;数组([0] =&gt;电子邮件[1] =&gt;名字[2] =&gt;姓氏))

所以试试

$arrHeader = $arrHeader[0];       
foreach($arrHeader as $value=>$title){       
echo '<option value = "' . $value. '">' . $title. '</option>';
}

答案 1 :(得分:0)

您可以使用implode功能,例如。像这样的人

echo '<option>' . implode('</option><option>', $arrHeader) . '</option>';

但你可能也想拥有value属性,所以循环会更好:

foreach($arrHeader as $text){
  echo '<option value = "' . $text. '">' . $text . '</option>';
  } 

修改

如果您想分配列号,请考虑使用:

foreach($arrHeader as $key=>$text){
  echo '<option value = "' . $key. '">' . $text . '</option>';
  }