如何拆分这些数组?

时间:2011-01-29 16:15:17

标签: php arrays string loops

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

我想拆分它们并获得最终结果

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

4 个答案:

答案 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;
}