【问题标题】:How to for-loop over two arrays in PHP? [duplicate]如何在 PHP 中循环遍历两个数组? [复制]
【发布时间】:2012-09-29 03:44:06
【问题描述】:

可能重复:
foreach with three variables add

我是 PHP 新手,所以请耐心等待。

我有一个带有两个变量的网址,如下所示:

 ?foo=1,2,3,4&bar=a,b,c,d

两个参数将始终具有相同数量的元素。我需要像这样循环遍历元素的数量:

1a
2b
3c
4d

并在每次迭代中为 foobar 值分配两个变量。

如果这是 javascript 没问题,但我不知道如何做这个 PHP。这就是我所拥有的:

$foo = strtok($rvar_foo,",");
$bar = strtok($rvar_bar,",");
while ( $foo ){
  # now how do I get the corresponding value for $bar?
}

【问题讨论】:

标签: php arrays for-loop


【解决方案1】:
$foo = isset($_GET['foo']) ?  explode(",", $_GET['foo']) :  array();
$bar = isset($_GET['bar']) ?  explode(",", $_GET['bar']) :  array();

for ($i = 0; $i < count($foo); $i++) {
    echo $foo[$i] . $bar[$i] . "<br />";
}

这是你想要的吗?

输出

1a
2b
3c
4d

【讨论】:

  • 不确定。试。 Explode 听起来很可疑...... :-)
  • @frequent explode('delimiter', $string) 就像 javascripts string.split('delimiter') 函数。
  • @frequent 非常有趣..... :)
【解决方案2】:

也许您正在寻找array_combine。它从两个数组创建一个数组,一个数组作为键,另一个数组作为值。

$foo = explode(',', $_GET['foo']);
$bar = explode(',', $_GET['bar']);
$foobar = array_combine($foo, $bar);

这将导致$foobar 使用来自$foo 的值作为其键,并使用$bar 作为值。

调用print $foobar[1] 将导致a 被打印到输出中。 (你可以找到一个运行的例子here

【讨论】:

    【解决方案3】:

    使用array_map:

    function my_function($a, $b)
    {
    
        var_dump($a . $b );
        // Do something with both values.
        // The first parameter comes from the first array, etc.
    }
    
    array_map("my_function", explode(",",$_GET['a']), explode(",",$_GET['b']));
    

    【讨论】:

    • 你不认为$_GET['a']需要一个数组所以它应该是array_map("my_function", explode(",",$_GET['a']), explode(",",$_GET['b']));
    • 哎呀,你是对的。我忘记了 PHP 不会在那里自动创建数组。这是我不使用 PHP 的众多原因之一 :-)
    • +1 不错 .. 更新了你的代码
    • 谢谢爸爸。我想我记得 PHP 将 $_GET 解释为数组的一种方式,但我需要研究一下。
    • 每个人都会忘记偶尔可以看到你是phytonc++
    猜你喜欢
    • 2015-11-10
    • 2015-07-11
    • 2019-07-10
    • 1970-01-01
    • 2010-11-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多