我在尝试构造变量名称时遇到了这个问题 (应该输出相应的数组元素。)
我首先设置用于测试目的的变量,通常,piece 变量将保存数组 $piece 的第一个元素。
$wordnumber = 0;
$piece[0] = "forever";
我稍后在出现问题之前回显它们,看看它们是否仍然正常。
echo "$piece[0]";
echo "$wordnumber";
输出正常。
forever0
但是问题来了,因为我试图创建一个自动处理每个数组元素的函数,所以我希望它每次都能构造下一个相应的变量。 但是不知何故,它在构建后就没有任何值(value)。
$name = ${'piece[' . $wordnumber . ']'};
echo "$name";
没有输出任何内容...
我尝试了很多不同的格式,我真的不知道为什么我在这里如此失败。 顺便说一句,该代码现在不属于任何函数。
更新: $name = $piece[$wordnumber] 解决了问题 我很好奇为什么我之前的格式没有按预期工作。
更新:André 解决了问题,问题是 $piece[0] 实际上并不是数组的一部分。所以 $piece 是实际变量。存储实际数组后 $piece = array("Redish", "Yellow", "Green");在开始时并使用全局 $piece;在我的职能中,一切都开始像魅力一样发挥作用。
最佳答案
我还没有测试过代码,但我认为你的第一种方法不起作用,因为你的变量名称是“piece”,而不是“piece[0]”。换句话说, ${'piece'}[0]
应该可以工作,但 ${'piece[0]'}
是错误的。尝试将其添加到脚本的最开头,PHP 应该会向您显示一些提示:
error_reporting(E_ALL);
ini_set("display_errors", 1);
关于php(复杂)动态变量名构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470420/