【问题标题】:Give names to array keys为数组键命名
【发布时间】:2015-12-22 02:18:15
【问题描述】:

所以我有这个代码:

<?php
$csv = array();
$lines = file('file.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value)
{
    $csv[$key] = str_getcsv($value);
}

echo '<pre>';
print_r($csv);
echo '</pre>';
?>

这给了我以下内容

[0] => Array
        (
            [0] => value1
            [1] => value2
            [2] => value3
            [3] => value4

如何命名我的密钥?所以我没有看到 0-1-2-3 而是 Name1-Name2-Name3 等。

像这样:

  [0] => Array
        (
            [Name0] => value1
            [Name1] => value2
            [Name2] => value3
            [Name3] => value4

【问题讨论】:

  • 您可以通过一个简单的for 循环和一个新数组来完成它。多研究一点。
  • 与您的其他问题有任何关系吗? stackoverflow.com/questions/32626445/add-keys-to-array
  • 人们需要学习如何学习。
  • @AlanMachado 我曾经被教导如何钓鱼。现在我有一支拖钓队为我做这项工作。
  • 请给出一个合适的例子来说明你希望数组是什么样子,最好是一个匹配一些示例输入的例子,这样转换很明显

标签: php arrays key


【解决方案1】:
$keys = ['Name1', 'Name2', 'Name3', 'etc']; 
$csv[$key] = array_combine($keys, str_getcsv($value));

成功了

谢谢马克贝克

【讨论】:

    【解决方案2】:

    现在我明白了!

    在这种情况下,您需要做的就是将字符串文字连接到您生成的键的前面,如下所示:-

    <?php
    $csv = array();
    $lines = file('file.csv', FILE_IGNORE_NEW_LINES);
    foreach ($lines as $key => $value)
    {
        $csv['Name'.$key] = str_getcsv($value);
    }
    
    echo '<pre>';
    print_r($csv);
    echo '</pre>';
    ?>
    

    【讨论】:

    • 和Smokey清除空气。哎呀...绿色的勾消失了。 噗! 就像魔法一样吗,Smokey?
    • 认为它实际上是子数组的键,而不是顶层
    • @RiggsFolly 我听到了。我删除了我的评论,因为它是基于 OP 的原始问题,这使得他似乎想从 Name1 开始,但现在显示的是 Name0。任何人,进入下一个问题。
    【解决方案3】:
    function csvToArray($filename, $delimiter = ',') {
            if (!file_exists($filename) || !is_readable($filename)) {
                return FALSE;
            }
    
            $header = NULL;
            $data = array();
    
            if (($handle = fopen($filename, 'r')) !== FALSE) {
                while (($row = fgetcsv($handle, 0, $delimiter)) !== FALSE) {
                    if (count($row) > 0 && !is_null($row[0])) {
                        if (!$header) {
                            $header = $row;
                        } else {
                            $data[] = array_combine($header, $row);
                        }
                    }
                }
                fclose($handle);
            }
    
            return $data;
        }
    

    试试这个功能 $filename 是文件的完整路径 还添加 csv 作为您想要的第一行键,函数将使用此第一行作为键

    csv 示例:

    "id","国家","城市"

    “1”,“我们”,“放弃”

    “2”,“我们”,“阿比维尔”

    【讨论】:

    • 您应该回答这个问题,而不仅仅是将您的一些代码粘贴到答案中。
    • 我有一种似曾相识的感觉saviost.net/php-convert-csv-to-array(不过,另一个试试这个
    • RiggsFolly 这是我没有看到你给我们更好的答案的答案! Alan Machado 除了我,你会再次发现美洲吗?
    • @AlanMachado 我想知道this... 是不是他们都注册的地方?
    • @Fred-ii- 请告诉我你只是为了开玩笑才部署它。
    猜你喜欢
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多