2011-01-29 92 views
2
$data = "google,98%,bing,92%,searchengine,56%,seo,85%,search,94%"; 

我想如果你希望你爲包含新行一個字符串輸出,您可以使用拆分thsese並獲得最終結果如何拆分這些數組?

google = 98% 
bing = 92% 
searchengine = 56% 
seo = 85% 
search = 94% 
+1

你想要什麼格式的最終​​結果?一個關聯數組?一串字符串,每行一個?包含新行的單個字符串? – 2011-01-29 16:19:06

+0

這是我想要展示的頁面上的最終結果,因此得到如此如此的百分比......實際上對於seo pupose – 2011-01-29 16:21:55

+2

`str_replace(',','=',str_replace('%,',「%\ r \ n「,$ str));`;-)))學會正確提問。 – zerkms 2011-01-29 16:23:07

回答

0

怎麼樣。 ..

$data = "google,98%,bing,92%,searchengine,56%,seo,85%,search,94%"; 
$dataSet = array_combine(array_map(create_function('$entry', 'return $entry[0];'), 
            array_chunk(explode(",", $data), 2)), 
         array_map(create_function('$entry', 'return $entry[1];'), 
            array_chunk(explode(",", $data), 2))); 

foreach ($dataSet as $cType => $cPercentage) { 
    echo $cType . " = " . $cPercentage; 
} 
3

preg_replace

$result = preg_replace('/([^,]*),([^,]*),?/', "$1 = $2\n", $data); 

輸出:

 
google = 98% 
bing = 92% 
searchengine = 56% 
seo = 85% 
search = 94% 

看到它的在線工作在ideone

+0

很好,如果他們只是想改變文本佈局,如果他們實際需要的東西的數據,更多的問題。 – Orbling 2011-01-29 16:29:52

1

試試這個:

$data = "google,98%,bing,92%,searchengine,56%,seo,85%,search,94%"; 

preg_match_all("/(\w+),(\d+)%/", $data, $data_array, PREG_SET_ORDER); 

foreach($data_array as $item) { 
    print $item[1]." = ".$item[2]."%<br />"; 
} 

解析一切都發生在同一行;唯一的循環是在輸出中。你可以做print_r($data_array)來查看數組是如何構造的,以防你想用數據做不同的事情。

此外,如果您希望百分號包含在數據中,則可以將其移至第二個括號對的內部。但是,如果你離開它(和只是顯示它在輸出時),它會更容易對數據進行計算,如果你需要

4

這將讓你的關聯數組:

$out = array(); 
$parts = explode(',', $data); 
for($i=0;$i<count($parts);$i++) { 
    $out[$parts[$i]] = $parts[++$i]; 
}