2011-01-29 43 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]; 
}