PHP 数组 - 从 CSV 文件读取,创建第一列键,第二列值

标签 php arrays

我有一个 CSV 文件,如下所示:

first-key,first-value
second-key,second-value
third-key,third-value
fourth-key,fourth-value

我正在使用以下方法将它们读入数组:

$tmp_array = array_map('str_getcsv', file('./values.csv'));

但是,这会产生以下数组:

Array
(
    [0] => Array
        (
            [0] => first-key
            [1] => first-value
        )

    [1] => Array
        (
            [0] => second-key
            [1] => second-value
        )

    [2] => Array
        (
            [0] => third-key
            [1] => third-value
        )

    [3] => Array
        (
            [0] => fourth-key
            [1] => fourth-value
        )

)

我想要的是这个数组:

Array
(
    [first-key] => first-value
    [second-key] => second-value
    [third-key] => third-value
    [fourth-key] => fourth-value
)

实现这一目标的一种方法是这样做:

$tmp_array = array_map('str_getcsv', file('./values.csv'));
$array = [];
foreach ($tmp_array as $row) {
    $array[$row[0]] = $row[1];
}

有更好的方法吗?也许使用array_map()

最佳答案

这取决于您在这种情况下对更好的定义。我认为你的解决方案已经足够好了。更好:

  • 不使用 foreach?
  • 减少行数?
  • 变量较少?
  • 使用更多标准库函数?

我想发布 2 个建议:

// 1
$tmp = array_map('str_getcsv', file('data.csv'));
$data = array_combine(array_column($tmp, 0), array_column($tmp, 1));

var_dump($data);

// 2
$data = [];
array_walk(
  $tmp,
  function($e) use (&$data) {$data[$e[0]] = $e[1];}
);

var_dump($data);

输出:

array(4) {
  ["first-key"]=>
  string(11) "first-value"
  ["second-key"]=>
  string(12) "second-value"
  ["third-key"]=>
  string(11) "third-value"
  ["fourth-key"]=>
  string(12) "fourth-value"
}
array(4) {
  ["first-key"]=>
  string(11) "first-value"
  ["second-key"]=>
  string(12) "second-value"
  ["third-key"]=>
  string(11) "third-value"
  ["fourth-key"]=>
  string(12) "fourth-value"
}

关于PHP 数组 - 从 CSV 文件读取,创建第一列键,第二列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63134438/

相关文章:

php - 转换 MP3 持续时间

php - AJAX POST 处理程序导致 "uncaught exception"

arrays - 将列值从 1 更改为 0

java - Java 中的 HashMap

java - arrayList 和 Object 数组的不同类型的错误

javascript - jQuery Ajax 登录中没有 'Access-Control-Allow-Origin' header

php - 使用 PHP 连接到数据库

c++ - 打印 3D 指针数组的元素

php - 如何按条件过滤数组

php - 如何从 WordPress 中的 URL 中删除自定义分类库