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 に答える