php(复杂)动态变量名构造

php(复杂)动态变量名构造,php,Php,我在尝试构造变量名时遇到了这个问题 (应输出相应的数组元素。) 我首先设置变量以进行测试,通常情况下,piece变量将保存数组$piece的第一个元素 $wordnumber = 0; $piece[0] = "forever"; 我稍后会在出现问题之前回显它们,看看它们是否仍然正常 echo "$piece[0]"; echo "$wordnumber"; 输出正常 forever0 但是问题来了,因为我试图创建一个自动处理每个数组元素的函数,所以我希望它每次都构造下一个对应的变量然而,

我在尝试构造变量名时遇到了这个问题 (应输出相应的数组元素。)

我首先设置变量以进行测试,通常情况下,piece变量将保存数组$piece的第一个元素

$wordnumber = 0;
$piece[0] = "forever";
我稍后会在出现问题之前回显它们,看看它们是否仍然正常

echo "$piece[0]";
echo "$wordnumber";
输出正常

forever0
但是问题来了,因为我试图创建一个自动处理每个数组元素的函数,所以我希望它每次都构造下一个对应的变量然而,它在构建后不知何故没有任何价值

$name = ${'piece[' . $wordnumber . ']'};
echo "$name";
不输出任何内容

我尝试了很多不同的格式,我真的不知道为什么我在这里这么难。 顺便说一句,代码现在不是任何函数的一部分

更新: $name=$piece[$wordnumber]解决了这个问题 我很好奇为什么我以前的格式没有按预期工作。


更新:安德烈解决了这个问题,问题是$piece[0]实际上不是数组的一部分。所以$piece是实际变量。存储实际数组后,$piece=数组(“Redish”、“黄色”、“绿色”);开始时,使用全局$piece;在我的功能中,一切都像一个魔咒一样开始工作。

试试
$name=$piece[$wordnumber]
echo$name


这将输出
“永远”

我还没有测试代码,但我认为您的第一种方法不起作用,因为您的变量名是“piece”,而不是“piece[0]”。换句话说,
${'piece'}[0]
应该可以工作,但是
${'piece[0]}
是错误的。尝试在脚本的开头添加此选项,PHP会向您显示一些抱怨:

error_reporting(E_ALL);
ini_set("display_errors", 1);

可能重复。PHPs变量语法不支持按数组索引访问。在这里阅读我的完整答案(带解答):我似乎没有很好地搜索现有问题,只是找到了格式为$myTempArr[$key];所以我把它改为$name=$piece[$wordnumber];现在它像一个永远输出的符咒一样工作。但我的问题仍然是,为什么${piece[0]}和我的明显错误的构造不起作用。我想我是好奇的类型。是的,这是正确的,它也适用于像$piece[$wordnumber]这样的空格。顺便说一句,我同时在寻找我的第一次格式化失败的原因。我认为数组引用器(
[]
)不应该包含在字符串中。因此${'parts'}[$wordnumber]有效。非常好的安德烈!聪明的想法!对我来说很有教育意义。问题确实在于变量不是实际数组!我把它改为$piece=数组(“红色”、“黄色”、“绿色”、“蓝色”、“靛蓝”);现在一切都很顺利。谢谢你的好话。如果我的答案对您来说足够,请将其设置为您接受的答案;]