2010-10-25 32 views
5

Tôi có dòng này của chuỗiPHP nổ và đưa vào mảng

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

các : (dấu hai chấm) là tách cho chủ đề chính, và | là tách cho các loại khác nhau của các tiểu chủ đề .

Tôi cố gắng để phát nổ nó ra và đặt nó vào mảng, tôi cần kết quả là một cái gì đó như thế này sẽ được hiển thị trong một trình đơn thả xuống: -

 
    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? 
    } 

Cảm ơn!

+0

Bạn có cần riêng mảng 2 chiều của phụ Thể loại? – Kel

+0

Bạn lấy đường đó ở đâu? –

+0

Bạn có cần một menu thả xuống cho tất cả hoặc một trình đơn thả xuống riêng cho từng loại không? – Jason

Trả lời

6

Bạn có thể làm:

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

Working link

+0

Cảm ơn câu trả lời của bạn. Nó hoạt động tuyệt vời! – Sylph

3

Code:

$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>"; 
} 

cập nhật để phản ánh việc bổ sung thả xuống. Có vẻ như tôi đã làm bài tập về nhà của bạn, mặc dù tôi sẽ để nó cho bạn để kết hợp tất cả thành một vòng lặp foreach.

+0

Cảm ơn Jason! Tôi không cần 3 câu trả lời nhưng câu trả lời của bạn đã giúp tôi hiểu rõ hơn: D – Sylph

+0

Tôi vừa mới nhận ra rằng mình có '$ ilovefood [$ cat [0]]' Tôi thực sự không thích mỗi con mèo. – Jason

1

tôi muốn đề xuất một phiên bản được cho là dễ đọc hơn của 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

Cảm ơn bạn! :) Giải quyết vấn đề của tôi;) – Sylph

Các vấn đề liên quan