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


php (complex) dynamic variable name construction

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

我从设置用于测试目的的变量开始,通常piece变量将包含数组$piece的第一个元素。

$wordnumber = 0;
$piece[0] = "forever";

我稍后在我的问题出现之前回复它们,看看它们是否仍然正常

echo "$piece[0]";
echo "$wordnumber";

输出正常。

forever0

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

$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);

只尝试$name = $piece[$wordnumber];echo $name
这将输出"forever"