$data1 = "mathews,luks,john,ethan,neil";
$data2 = "80%,60%,78%,55%,62%";
希望将两者结合起来,如
mathews = 80%
Luks = 60%
John = 78%
等等......怎么做?我希望打印结果与Mathews = 80%
完全相同
答案 0 :(得分:3)
http://us.php.net/manual/en/function.array-combine.php
$ result = array_combine(explode(',',$ data1),explode(',',$ data2);
提取:
答案 1 :(得分:2)
这个怎么样??
print_r(array_combine(explode(',',$data1),explode(',',$data2)));
答案 2 :(得分:2)
$arr = array_combine(explode(',', $data1), explode(',', $data2));
或者
$names = explode(',', $data1);
$par = explode(',', $data2);
$arr = array();
foreach ($names as $idx=>$name)
{
$arr[$name] = $par[$idx];
}
答案 3 :(得分:1)
使用内置的array_combine
答案 4 :(得分:0)
如果你是某种反循环狂热分子,你可以创建一个递归函数。
function no_loop_combine($data1,$data2,$index)
{
if($index == count($data1))
{
return '';
}
else
{
return $data1[$index] . ' = ' . $data2[index]
. '\n' . no_loop_combine($data1,$data2,$index + 1);
}
}
然后你只需要调用你的函数指定$ index = 0,你就会得到结果。使用array_combine可能仍然使用循环,只是因为你正在调用一个函数。使用递归意味着没有循环。刚刚意识到你的初始输入是一个字符串,而不是一个循环。所以你可以在将它传递给函数之前调用explode:
no_loop_combine(explode(',', $data1 ),explode(',',$data2),0);
答案 5 :(得分:0)
您可以考虑将preg_split
用于字符串:
$names = preg_split("/[,]+/", "mathews,luks,john,ethan,neil");
$percent = preg_split("/[,]+/", "80%,60%,78%,55%,62%");
然后你可以像其他人建议的那样使用array_combine
,或者只使用2个数组$ names和$ percent以及共享索引,例如$ names [2]和$ percent一起[2]。
答案 6 :(得分:0)
如bensui所述:
$data1 = "mathews,luks,john,ethan,neil";
$data2 = "80%,60%,78%,55%,62%";
$array = array_combine(explode(',',$data1), explode(',',$data2));
这将导致:
print_r($array);
Array
(
[mathews] => 80%
[luks] => 60%
[john] => 78%
[ethan] => 55%
[neil] => 62%
)
通过执行以下操作,您可以轻松更新关联分数:
$array['mathews'] = '90%';
然后你可以使用我之前提供的array_slice来丢弃john和ethan:
$newArray = array_slice($array, 2, 2);
这会给你:
print_r($newArray);
Array
(
[mathews] => 80%
[luks] => 60%
[neil] => 62%
)
注意:使用循环没有任何问题,事实上,当语言中内置了解决许多常见问题的方法时,它们经常被过度使用。