0

追加の処理が必要な CSV ファイルがあります。カスタム機能のほとんどが完成しました。現時点で行き詰まっているのは、フィードへの最新の追加であり、1 つの列に複数のカテゴリがあります。新しいフィールド設定の簡単な例を次に示します。

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

ガーッ。ゴーグル、彼らは何もしません!

その出力形式を変更できない場合 (そして、より適切なものに変更する必要があります)、力ずくで実行する必要があります。

$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 に答える
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 に答える