2010-10-25 92 views
5

我有這行字符串的PHP爆炸並投入陣列

Fruits-banana|apple|orange:Food-fries|sausages:Desserts-ice cream|apple pie

:(結腸)是主要主題的隔膜和|是對於不同類型的子主題隔板。

我試圖引爆出來,放入數組,我需要的結果是要顯示這樣的事情在一個下拉菜單: -

 
    Fruits 
     banana 
     apple 
     orange 
    Food 
     fries 
     sausages 
$result=explode(":",$data); 
    foreach($result as $res) { 
     $sub_res[]=explode("-",$res); 

    } 


    foreach($sub_res as $sub) { 
     //echo $sub[1]."<br>"; Over here, I can get the strings of [0]=>banana|apple|orange, [1]=>sausages|fries, 
     // I explode it again to get each items 
      $items[]=explode("|",$sub[1]); 
     $mainCategory[]=$sub[0]; // This is ([0]=>Fruits, ]1]=>Food, [2]=>dessert 
      // How do I assign the $items into respective categories? 
    } 

謝謝!

+0

你需要子的獨立的2維數組類別? – Kel 2010-10-25 19:07:33

+0

你從哪裏得到那條線? – 2010-10-25 19:14:13

+0

您是否需要爲每種類型的所有或單獨的下拉菜單使用一個下拉菜單? – Jason 2010-10-25 19:20:28

回答

6

你可以這樣做:

$result=explode(":",$data); 
foreach($result as $res) { 
     $sub = explode("-",$res); 
     $mainCategory[$sub[0]] = explode("|",$sub[1]); 
} 

Working link

+0

感謝您的回答。它很棒! – Sylph 2010-10-25 22:50:30

3

代碼:

$data = "Fruits-banana|apple|orange:Food-fries|sausages:Desserts-ice cream|apple pie"; 
foreach(explode(":",$data) as $res) { // explode by ":" 
    $cat = explode("-",$res); // explode by "-" 
    $ilovefood[$cat[0]] = explode("|",$cat[1]); // explode by "|" 
} 
print_r($ilovefood); 
//Returns : Array ([Fruits] => Array ([0] => banana [1] => apple [2] => orange) [Food] => Array ([0] => fries [1] => sausages) [Desserts] => Array ([0] => ice cream [1] => apple pie)) 
foreach($ilovefood as $type=>$yum){ 
    echo "$type:<select>"; 
    foreach($yum as $tasty){ 
    echo "<option>$tasty</option>"; 
    } 
    echo "</select>"; 
} 

更新,以反映下拉加法。看起來我只是做了你的功課,儘管我會把它留給你,把所有的東西合併成一個foreach循環。

+0

謝謝傑森!我不需要3滴,但你的回答確實幫助我更好地理解:D – Sylph 2010-10-25 22:50:00

+0

我剛剛意識到我有'$ ilovefood [$貓[0]]'我其實並不喜歡每隻貓。 – Jason 2010-10-26 00:39:54

1

我提出的一個更易讀版codeaddicts' answer

$str = "Fruits-banana|apple|orange:Food-fries|sausages:Desserts-ice cream|apple pie"; 

$topics = array(); 
foreach (explode(':', $str) as $topic) { 
    list($name, $items) = explode('-', $topic); 
    $topics[$name] = explode('|', $items); 
} 
+0

謝謝! :)解決了我的問題;) – Sylph 2010-10-25 22:50:53