2016-09-26 72 views
1

我想访问PHP中的关联数组的值。我使用PHP下面的循环填充数组:为什么这会返回空字符串?

$db = array("a","b","c"); 
foreach ($db as $q) { 
    $$q = 'value'; 
} 

这个版本打印正确的价值观

foreach ($db as $q) { 
    echo '<li>'; echo $$q; echo '</li>'; 
} 
\\THIS GIVES ME THE CORRECT OUTPUT <li>value</li><li>value</li><li>value</li> 

但我希望通过自己的索引来访问值

$num = count($db); 
for ($i = 0; $i < $num; $i++) { 
    echo '<li>'; echo $$db[$i]; echo '</li>'; 
} 
\\\\THIS GIVES ME THE WRONG OUTPUT (EMPTY STRINGS <li></li><li></li><li></li> 

第二个版本出了什么问题?我如何通过索引正确访问此关联数组中的值?

+1

删除多余的'$'='echo $ db [$ i];' – nogad

+0

是否返回键值?我如何获得这些值? – user2212461

+2

不,你是否打算测试它 – nogad

回答

1
echo '<li>'; echo $$db[$i]; echo '</li>'; 

在这一行是一个$太多。写:

echo '<li>'; echo $db[$i]; echo '</li>'; 

这应该有所斩断。

PS:您不必每次都写echo。使用字符串连接:

echo '<li>' . $db[$i] . '</li>'; 
+0

不会返回密钥吗?我如何获得这些值? – user2212461

1

你正在尝试做的事情很奇怪,反正解决问题的方法是括号:{ }

$num = count($db); 
for ($i = 0; $i < $num; $i++) { 
    echo '<li>'; echo ${$db[$i]}; echo '</li>'; 
} 

看怎么括号解决歧义,因为没有他们,PHP不知道你是指${$db}[$i]还是${$db[$i]}

相关问题