PHP 将逗号分隔的字符串分解为数组
PHP explode comma separated string into array
假设我有一个包含以下数据的文本字段。以 #
开头的行是注释。第一行是 headers 列,值以逗号分隔。
# some instruction
# some instruction
Day,Open,Close
Monday,09:00,17:00
Tuesday,09:00,18:00
我怎样才能分解它得到这样的数组:
$openingTimes = [
['Day' => 'Monday', 'Open' => '09:00', 'Close' => '17:00'],
['Day' => 'Tuesday', 'Open' => '09:00', 'Close' => '18:00'],
];
如果您首先用新行拆分文本字段,然后一次处理每一行。
忽略以 #
($line[0] == '#'
位)开头的任何内容。
使用 str_getcsv()
将行拆分为单独的字段(允许引用字段等)然后如果到目前为止还没有 header,则将此拆分值存储为 header。如果有 header,则将此新数据添加为输出的一部分,将其与 array_combine()
...
组合
$input = '# some instruction
# some instruction
Day,Open,Close
Monday,09:00,17:00
Tuesday,09:00,18:00';
$lines = explode(PHP_EOL, $input);
$header = null;
$output = [];
foreach ( $lines as $line ) {
if ( $line[0] == '#' ) {
continue;
}
$data = str_getcsv($line);
if ( $header == null ) {
$header = $data;
}
else {
$output[] = array_combine($header, $data);
}
}
print_r($output);
假设我有一个包含以下数据的文本字段。以 #
开头的行是注释。第一行是 headers 列,值以逗号分隔。
# some instruction
# some instruction
Day,Open,Close
Monday,09:00,17:00
Tuesday,09:00,18:00
我怎样才能分解它得到这样的数组:
$openingTimes = [
['Day' => 'Monday', 'Open' => '09:00', 'Close' => '17:00'],
['Day' => 'Tuesday', 'Open' => '09:00', 'Close' => '18:00'],
];
如果您首先用新行拆分文本字段,然后一次处理每一行。
忽略以 #
($line[0] == '#'
位)开头的任何内容。
使用 str_getcsv()
将行拆分为单独的字段(允许引用字段等)然后如果到目前为止还没有 header,则将此拆分值存储为 header。如果有 header,则将此新数据添加为输出的一部分,将其与 array_combine()
...
$input = '# some instruction
# some instruction
Day,Open,Close
Monday,09:00,17:00
Tuesday,09:00,18:00';
$lines = explode(PHP_EOL, $input);
$header = null;
$output = [];
foreach ( $lines as $line ) {
if ( $line[0] == '#' ) {
continue;
}
$data = str_getcsv($line);
if ( $header == null ) {
$header = $data;
}
else {
$output[] = array_combine($header, $data);
}
}
print_r($output);