我试图从csv变量创建和数组:
$csv="one,two,tree,four";
$bits = split(',',$csv);
$elements = array();
for ($i=0;$i<count($bits);$i++)
{
$item .= '"'.$bits[$i].'"=>"'.$bits[$i].'",';
}
$item = substr($item, 0, -1);
$ara=array($item);
$USE['list'] = $ara;
我需要获得这样的东西,那就是全部:
$USE['list'] = array("one"=>"one","two"=>"two","tree"=>"tree","four"=>"four");
答案 0 :(得分:2)
您的代码中已有基本解决方案。你唯一需要的是:
$bits = split(',', $csv);
使用您的示例输入,这将为您提供以下数组:
$bits = array("one", "two", "three", "four");
如果你真的需要键值对样式$USE['list']
(我不确定这有什么用,因为键和值会相同),你可以这样做:
$USE['list'] = array();
foreach($bits as $bit) {
$USE['list'][$bit] = $bit;
}
但是,正如其他人所提到的,这绝对不是解析CSV数据最安全的方法(它不能正确处理包含逗号,已引用的值等的值)。如果您因为没有PHP 5.3.0或更高版本而无法使用str_getcsv()
,请查看parsecsv-for-php。
答案 1 :(得分:1)
@ user113215的回答很好。但是,如果你真的需要一个关联数组:
$csv = 'one,two,tree,four';
$USE['list'] = array();
$bits = explode(',', $csv);
foreach($bits as $bit)
{
$USE['list'][$bit] = $bit;
}
请注意,拆分功能已弃用,请改用爆炸。
答案 2 :(得分:1)
这里有许多天真的实现,除了最基本的情况之外,不应该使用它们。
在PHP中解析CSV的正确方法是使用str_getcsv()
。
或者,至少,任何自动解决方案都应考虑引用值(此时您还需要考虑转义引号)。否则,您将获得错误的转换并可能损坏CSV数据(为下一个必须使用损坏的CSV数据的人造成噩梦。)
答案 3 :(得分:0)
尽量不要使用拆分,因为它已被折旧。
<?php
$csv="one,two,tree,four";
$bits = explode(',',$csv);
foreach($bits as $value) {
$array[$value] = $value;
}
$USE['list'] = $array;
var_dump($USE['list']);
?>