使用带有Variable + Index组合的foreach

时间:2016-01-20 23:21:10

标签: php loops for-loop foreach

关注unsolved question, 我正在尝试计算如何使用foreach

我该如何制作这种代码:

$m1="mbob";
$m2="mdan";
$m3="mbill";

$a = array('bob', 'dan', 'bill');

$i = 1; /* for illustrative purposes only */

foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    echo $m[$i];
    $i++;
}

输出此结果:

$a[1] => bob.
mbob
$a[2] => dan.
mdan
$a[3] => bill.
mbill

我收到了错误:

  

未定义的变量:m

但我正在尝试输出m1,m2,m3变量,而不仅仅是m

3 个答案:

答案 0 :(得分:1)

这是我从未做过的事情,但你可以试着试一试:

echo $('m' . $i);

这类似于函数调用,您可以通过字符串动态构造函数名称,但我不知道它是否也适用于局部变量。

答案 1 :(得分:1)

这是有效的代码,但我不推荐它。我建议您只将$m值存储在数组中。

<?php
    $m1="mbob";
    $m2="mdan";
    $m3="mbill";

    $array = array('bob', 'dan', 'bill');
    $i = 1;
    foreach ($array as $value) {
        echo "\$a[$i] => $value.\n";
        echo '<br>';
        echo ${"m".$i};
        echo '<br>';
        $i++;
    }
?>

答案 2 :(得分:0)

在您的代码中,$ m不是数组。有一种方法可以创建变量变量名称,这似乎是您尝试做的,但更简单的是创建$ m作为数组:

$m =array("mbob","mdan","mbill");

$a = array('bob', 'dan', 'bill');

$i = 1; /* for illustrative purposes only */

foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    echo $m[$i];
    $i++;
}