0

我有一段时间不做php了,现在我决定做一个小脚本,但我遇到了一个以前遇到过的问题,我自己设法解决了,但现在我做不到。

假设我有'n'这样的数组......

$numbers1=array('32','16','29','41','36');
$numbers2=array('13','50','47','7','39');
$numbers3=array('3','4','29','35','31');

然后我想使用'for循环'来生成数组名称并输出数组的某些元素和/或整个数组本身,就像这样......

for($count1=1;$count1<=3;$count1++)
{
    $num1='numbers'.$count1;
    print_r($$num1); //this outputs what's inside all arrays as expected
    echo $$num1[0];
}

“echo $num1[0]”是问题所在,它只是为了说明我想从所有数组的元素 0 中“回显”内容,获得以下输出“32133”。

很久以前,当我开始使用 php 时,我在 stackoverflow 上提出了一个类似的问题,但该问题的答案不适用于这种情况,而且我在 stackoverflow 上搜索和搜索的 2 小时都没有。

4

3 回答 3

2

你需要使用{},所以 PHP 知道如何解释你的变量。

${$num1}[0]

试试看。那应该按照您想要的方式工作。

$$num1[0]被解释为${$num1[0]}(所以 PHP 正在寻找$n)。

演示:http ://codepad.org/yn1JUG5U

于 2012-09-06T21:19:18.467 回答
1

你可以像这样迭代,但我不推荐它。您需要重新考虑您的阵列设置。

<?php
$numbers1=array('32','16','29','41','36');
$numbers2=array('13','50','47','7','39');
$numbers3=array('3','4','29','35','31');

for( $i=1; $i<=3; $i++ )
{
    $array = 'numbers'.$i;
    
    foreach( $$array as $v )
    {
        echo $v .' ';
    }
    
    echo "\n";
}
?>

输出:

32 16 29 41 36

13 50 47 7 39

3 4 29 35 31

于 2012-09-06T21:23:08.010 回答
0

您必须插入如下内容:

$my_array = $$num1;
echo $my_array[0];

编辑:去找@Rocket 的答案——稍微干净一点。

于 2012-09-06T21:18:56.570 回答