2

我试图从 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");
4

4 回答 4

2

您的代码中已经有了一个基本的解决方案。您需要的唯一行是:

$bits = split(',', $csv);

使用您的示例输入,这将为您提供以下数组:

$bits = array("one", "two", "three", "four");

如果您真的需要$USE['list']键值对样式(我不确定这有什么帮助,因为键和值将是相同的),您可以执行以下操作:

$USE['list'] = array();
foreach($bits as $bit) {
    $USE['list'][$bit] = $bit;
}

但是,正如其他人所提到的,这绝对不是解析 CSV 数据的最安全方法(它不会正确处理包含逗号的值、已引用的值等)。str_getcsv()如果您因为没有 PHP 5.3.0 或更高版本而无法使用,请查看parsecsv-for-php

于 2012-09-03T15:49:45.060 回答
1

这里有很多幼稚的实现,除了最基本的情况外,不应该在任何情况下使用。

在 PHP 中解析 CSV 的正确方法是使用str_getcsv().

或者,至少,任何自卷解决方案都应考虑引用值(此时您还需要考虑转义引号)。否则,您将获得不正确的转换并可能损坏 CSV 数据(为下一个必须使用损坏的 CSV 数据的人制造噩梦)。

于 2012-09-03T15:55:21.983 回答
1

@user113215 的回答很好。但是,如果你真的需要一个关联数组:

$csv = 'one,two,tree,four';
$USE['list'] = array();

$bits = explode(',', $csv);

foreach($bits as $bit) 
{
    $USE['list'][$bit] = $bit;
}

请注意拆分功能已弃用,请改用explode

于 2012-09-03T15:52:20.217 回答
0

尽量不要使用拆分,因为它已经折旧。

<?php

$csv="one,two,tree,four";


$bits = explode(',',$csv);
foreach($bits as $value) {
    $array[$value] = $value;
}

   $USE['list'] = $array;

var_dump($USE['list']);

?>
于 2012-09-03T15:51:45.677 回答