PHP在函数中使用一个变量,该变量位于函数外部的数组中

PHP在函数中使用一个变量,该变量位于函数外部的数组中,php,arrays,function,variables,Php,Arrays,Function,Variables,下面是数组($answers),您可以在最后一个数组项中看到$id: 14 => array ( "Joghurtos zabkása", "Joghurt zabbal", "Joghurt zabpehellyel", "Reggeli zabbal", "Egyéb <input type=\"text\" name=\"poll".$id."\" style=\"width:100px; \" value=\"\" />

下面是数组($answers),您可以在最后一个数组项中看到$id:

    14 => array (
    "Joghurtos zabkása",
    "Joghurt zabbal",
    "Joghurt zabpehellyel",
    "Reggeli zabbal",
    "Egyéb <input type=\"text\" name=\"poll".$id."\" style=\"width:100px; \" value=\"\" /> "
14=>array(
“Joghurtos zabkása”,
“Joghut zabbal”,
“Joghut Zabbehellyel”,
“Reggeli zabbal”,
“Egyéb”
在函数内部:

function NewPoll($id,$type,$optional=false){
global $answers;
            foreach ( $answers[$id] as $key => $value ) {
                echo "
                <input type=\"radio\" name=\"poll".$id."\" id=\"poll".$id."[".$key."]\" value=\"".$key."\" />
            <label for=\"poll".$id."[".$key."]\">".$value."</label><br />";
            }
函数NewPoll($id,$type,$optional=false){
全球$答案;
foreach($key=>$value时回答[$id]as$key){
回声“
“$value。”
”; }

我想做的是,当我从函数中打印时,通过$value变量,数组中的$id应该在函数中获取$id。$id在函数中获取值,在函数外没有定义,但我想在加载到时使用它。我不知道我有多清楚…

你不能这样做,因为你有已将$id注入字符串


尝试
var_dump($answers);
,它不会显示您在问题中发布的输出(标识符“$id”被其内容替换).

您无法执行此操作。当数组中的
14
元素被定义时,
$id
变量被替换为其值并嵌入字符串中。一旦您开始访问该数组,该字符串就没有“历史记录”表明该特定值来自变量,现在它只是一个字符串

e、 g.如果你有

$foo = 'bar';
$baz = "This string contains $foo";
echo $baz; // prints: This string contains bar
$foo = 'qux';
echo $baz; // prints: This string contains bar
在生成字符串后更改
$foo
而不是在该字符串中更改
bar
qux
,因为
bar
来自变量的事实在生成字符串时丢失。

尝试:

class Container {

    public static $answers = array('foo', 'bar');
}


function NewPoll($id,$type,$optional=false)
{

    foreach ( Container::$answers[$id] as $key => $value )
    //...

然而,我建议更好地使用对象和类

这可能不是最好的方法,但您可能可以使用正则表达式从arrayOK中的字符串中获取$id的值,这一点现在已经很清楚了。是否有任何解决方法,即使它完全不同?使用伪模板系统,例如,代替emb直接编辑$id,放入一些不可靠的非标准字符串,例如
@@id@
,当您想输出字符串时,对其进行字符串替换。或者只是在以后而不是提前生成字符串。是的,实际上我以前试过。我使用过