我在内容管理系统中从模板标签创建一系列数组,并将这些数组的标题输出为标有变量的数组:
<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)
答案 0 :(得分:1)
尝试$$firstArray
而不是${$firstArray}
答案 1 :(得分:0)
此代码可以正常工作:
$foo=array(3,2,1);
$foostr="foo";
print_r(${$foostr});
这正是你正在做的事情。您的代码中必定存在错误。不知何故,$GeneratedArrayName1
没有通过语句尝试打印它来生成。
尝试检查输入变量 - 确保其开头或结尾没有空格。如果你必须的话trim()
。
如果这些都不起作用,请编辑您发布产生此错误的最小数量的代码(完整),我们将对其进行检查。
答案 2 :(得分:0)
你有没有使用多维数组的原因?这个语法比变量变量更清晰。