0

我有一个 CSV 文件,需要一些额外的处理。我已经完成了我们的大部分自定义功能。我目前卡住的是提要的最新添加,一列中有多个类别。这是新字段设置的快速示例。

Category01@Things~Category01@Will~Category01@Be~Category01@Here~Category02@Testing~Category02@More text here~Category02@Any data~Category02@No more data for this category~LastCategory@This~LastCategory@Is~LastCategory@The~LastCategory@End

我需要从每个可用的类别中用 PHP 构建一个数组,类似于;

$category01 = array('Things', 'Will', 'Be', 'Here');

任何帮助将不胜感激。谢谢!

4

2 回答 2

0

如果我正确理解您的问题和格式,以 分隔的类别~,并且每个都列为"SomeString@Category Name",那么这应该是诀窍。但是我认为这与 CSV 格式没有任何关系。

$pairs = explode('~', $string);
$cats = array();
foreach ($pairs as $pair) {
    list($cat_number, $cat_name) = explode('@', $pair);
    $cats[] = $cat_name;
}
于 2011-10-21T16:24:21.510 回答
0

啊哈。护目镜,他们什么都不做!

如果您无法更改该输出形式(并且应该将其更改为更好的形式),则必须使用蛮力:

$csv = '...';
$categories = array();
$parts = explode('~', $csv);
foreach($parts as $part) {
    $bits = explode('@', $part);
    $category = (int)substr($part[0], 8);
    if (!is_array($categories[$category])) {
        $categories[$category] = array();
    }
    $categories[$category][] = $part[1];
}

当然,这会LastCategory在“csv”的末尾炸毁你的东西。所以......让我再次强烈敦促您首先修复生成所谓“csv”的任何内容。

于 2011-10-21T16:25:12.927 回答