如何在没有任何循环的情况下组合两者?

时间:2011-01-29 01:46:32

标签: php arrays for-loop

$data1 = "mathews,luks,john,ethan,neil";

$data2 = "80%,60%,78%,55%,62%";

希望将两者结合起来,如

mathews = 80%
Luks    = 60%
John    = 78%
等等......怎么做?我希望打印结果与Mathews = 80%

完全相同

7 个答案:

答案 0 :(得分:3)

http://us.php.net/manual/en/function.array-combine.php

$ result = array_combine(explode(',',$ data1),explode(',',$ data2);

提取:

  • 如果您知道密钥名称:echo $ result ['john'];
  • if all:foreach($ result as $ key => $ value){echo $ key。 ':'。 $值; }
  • 到gey键列表:$ list = explode(',',$ data1)或$ list = array_keys($ result); http://us.php.net/manual/en/function.array-keys.php

答案 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%
)

注意:使用循环没有任何问题,事实上,当语言中内置了解决许多常见问题的方法时,它们经常被过度使用。