$data = "google,98%,bing,92%,searchengine,56%,seo,85%,search,94%";
我想拆分它们并获得最终结果
google = 98%
bing = 92%
searchengine = 56%
seo = 85%
search = 94%
答案 0 :(得分:4)
这将为您提供一个关联数组:
$out = array();
$parts = explode(',', $data);
for($i=0;$i<count($parts);$i++) {
$out[$parts[$i]] = $parts[++$i];
}
答案 1 :(得分:3)
如果您希望输出为包含新行的单个字符串,则可以使用preg_replace
:
$result = preg_replace('/([^,]*),([^,]*),?/', "$1 = $2\n", $data);
输出:
google = 98% bing = 92% searchengine = 56% seo = 85% search = 94%
请参阅ideone在线工作。
答案 2 :(得分: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)
查看数组的结构,以防您想对数据执行不同的操作。
此外,如果您想要包含在数据中的百分号,您可以将其移动到第二个括号对的内部。但是如果你把它遗漏(并且只是在输出时显示它),如果需要,将更容易对数据进行计算
答案 3 :(得分: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;
}