2011-11-07 80 views
1

我有這個字符串 -關於PHP ...如何將字符串轉換爲數組然後顯示出來?

$result = "ABCDE"; 

,我想他們單獨到3份

(like part 1 = A, part 2 = B, part 3 = C..., part 5 = E) 

,他們每個人

part 1(A) = Apple 
part 2(B) = Orange 
part 3(C) = Ice-cream 
part 3(D) = Water 
part 5(E) = Cow 

的給出一個名字,那麼最後輸出像

輸出:你選擇蘋果,橙,冰淇淋,水,牛

或類似這樣的

$result = "ACE"; 

輸出:您可以選擇蘋果,冰激凌,牛

我一直在使用陣列

$result = "ABCDE"; 
$showing = array(A => 'Apple , ', B => 'Orange , ', C => 'Ice-cream , ', 
D => 'Water , ', E => 'Cow , '); 
echo $showing[$result]; 

嘗試,但我什麼也沒得到,而輸出,似乎數組在固定字符串中不起作用。

我想知道如何做到這一點

+0

你沒有叫鍵'了'$ showing'數組中ABCDE'設置,所以它不會顯示任何東西。你需要將'$ result'字符串分割成單獨的字符並輸出與該數組相交的所有數組元素(提示提示*咳嗽*'array_intersect' *咳嗽*)。 – deceze

回答

1

對於一個系魔法:

echo implode('',array_intersect_key($showing,array_flip(str_split($result)))); 
+0

codaddict&Vikk你們兩個都對,很好!只是想知道我可以有兩個被接受的答案,那兩個代碼真的很棒,而且這次我選擇了Vikk。 – user1033201

1

您可以使用函數str_split字符串分割成單個字母,以後可以作爲關聯數組的鍵。

此外,您不需要在每個字符串的末尾添加逗號。相反,你可以使用implode功能的加入自己的價值觀:

$input = "ABCDE"; 
$showing = array('A' => 'Apple', 'B' => 'Orange', 'C' => 'Ice-cream', 
       'D' => 'Water', 'E' => 'Cow'); 
$key_arr = str_split($input); 
$val_arr = array(); 
foreach($key_arr as $key) { 
     $val_arr[] = $showing[$key]; 
} 

echo "You choose ".implode(',',$val_arr)."\n"; 
0

您可以從類似於一個數組元素的字符串,這樣訪問字符:

$string = "ABCDE"; 
echo $string[2]; // "C" 

從技術上講,這不是真的像數組一樣對待它,它只是使用類似的語法。

你可以使用

$choices= array('A' => 'Apple', 'B' => 'Orange', 'C' => 'Ice-cream', 
    'D' => 'Water', 'E' => 'Cow'); 
$selected[] = array(); 

for ($i = 0, $len = strlen($result); $i < $len; $i++) { 
    $selected[] = $choices[$string[$i]]; 
} 

echo "You have selected: " . implode(', ', $selected); 

雖然str_split,如其他人所說,也將工作。

相關問題