如何将字符串的每个字符保存在不同的列中

How to save each character of string in different column

我正在根据 php 中的用户输入创建一个新的 CSV 文件,如下所示:

public function handle()
{
    $a = readline('Enter a string: ');
    $list = array (
        array($a)
    );
    
    $fp = fopen('file.csv', 'w');
    
    foreach ($list as $fields) {
        fputcsv($fp, $fields);
    }
    
    fclose($fp);
    echo PHP_EOL . "CSV created!";
}

并得到这样的输出:

但我希望输出是这样的:

h,e,l,l,o,w,o,r,l,d

不同列中的每个字符

我该如何存档?

您可以将字符串拆分成块——在这种情况下,每个块的长度为 1 个字符——使用 str_split

    $a = readline('Enter a string: ');
    $list = array (
        str_split($a)
    );

如果稍后你想添加更多的列,那么你可以这样做:

    $a = readline('Enter a string: ');
    $list = array (
        array_merge(array("foo", "bar"), str_split($a))
    );

编辑:

在您的问题中,您要求“不同列中的每个字符”,但根据您的评论,我认为您想要一列,但字符被 space 分割?在那种情况下:

    $a = readline('Enter a string: ');
    $list = array (
        implode(',', str_split($a))
    );

fputscsv 将确保字符串被正确转义。

如果你想要 both 多列 and 每列以 space 结尾,然后正常拆分字符串但是还可以通过在末尾添加 space 来修改每个数组条目:

    $a = readline('Enter a string: ');
    $list = array (
        array_map(
          function($char) { return "$char,"; },
          str_split($a)
       )
    );

array_map 将为每个数组条目 运行 一个函数(“可调用”)。