用于调用以编程方式创建的数组的变量变量

时间:2009-08-17 18:20:46

标签: php arrays variables

我在内容管理系统中从模板标签创建一系列数组,并将这些数组的标题输出为标有变量的数组:

<Loop>

$<GeneratedArrayName1> = array( "foo" => "bar" );

$<GeneratedArrayName2> = array( "foo" => "bar" );

</Loop>

我还生成了另一个可能的GeneratedArrayNames数组,并按计数对其进行排序。我循环遍历此数组以获取GeneratedArrayNames,因此我可以有选择地显示它们。排序之后,我想拉出并显示GeneratedArrayNames中的一些数组。我这样做是通过将指针放在主数组的顶部并获得名称:

reset($ArrayNames);
$firstArray = current($ArrayNames); //outputs GeneratedArrayName1

然后我通过获取Variable变量来拉取GeneratedArrayName,这给了我一个错误:

print_r(${$firstArray}); // outputs Undefined variable: GeneratedArrayName1

但是当我硬编码时,我得到了正确的数据:

print_r($GeneratedArrayName1); // outputs the array

我哪里错了?

修改

我通过这个循环得到$firstArray

$count = 0;
foreach($ArrayNames as $ArrayCount => $ArrayName) {

$count++;
echo "$ArrayName" . ' - ' . "$ArrayCount" . '<br>';

if ($count >= 3) {
    break;
    }

} //from here I proceed to reset($ArrayNames)

3 个答案:

答案 0 :(得分:1)

尝试$$firstArray而不是${$firstArray}

答案 1 :(得分:0)

此代码可以正常工作:

$foo=array(3,2,1);
$foostr="foo";
print_r(${$foostr});

这正是你正在做的事情。您的代码中必定存在错误。不知何故,$GeneratedArrayName1没有通过语句尝试打印它来生成。

尝试检查输入变量 - 确保其开头或结尾没有空格。如果你必须的话trim()

如果这些都不起作用,请编辑您发布产生此错误的最小数量的代码(完整),我们将对其进行检查。

答案 2 :(得分:0)

你有没有使用多维数组的原因?这个语法比变量变量更清晰。

相关问题