2016-12-08 8 views

答えて

0

多次元配列を使用して可能な解決策:

$string = '[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]@old|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|[email protected]|insurance[email protected]|[email protected]'; 
$primaryData = explode('|', $string); 
$categories = []; 
foreach($primaryData as $data) 
{ 
    $dataDetails = explode('@', $data); 
    //storing each category in a separate array 
    $categories[$dataDetails[0]][] = $dataDetails[1]; 
} 
foreach ($categories as $categoryName => $categoryContents) { 
    //we should only want unique categories 
    $categories[$categoryName] = array_unique($categoryContents); 
    //test output 
    print "$categoryName category:\n"; 
    print_r($categories[$categoryName]); 
    print "\n"; 
} 
+0

通知:文字列は動的です。 – pichanakian

+0

どのカテゴリの種類にも対応するようにコードを更新しました。 –

0

は、文字列が動的であることに注意してください。

$string1 = "type @ new | color @ red | company @ zara | weight @ 500gr"; $string2 = "type @ new | color @ red | company @ zara"; $string3 =「タイプ@新規|カラー@赤|会社@ザラ|保険@はい|保証@いいえ」;

例えば

$string新しい@ = "タイプ|赤@色|ザラ@会社|スペイン@国| 500gr 型@行程@重量|アディダス@会社| |黄@色の国@イタリア タイプ@ old | color @ black | company @ nike |国@フランス タイプ@ soon | color @ blue | company @ reebok | country @ america | insurance @ yes | warranty @ no ";

関連する問題