为什么这会返回空字符串?

时间:2016-09-26 00:26:43

标签: php arrays

我想在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>

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

2 个答案:

答案 0 :(得分:1)

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

这一行中$太多了。写:

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

这应该可以解决问题。

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

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

答案 1 :(得分:1)

你正在尝试做一些非常奇怪的事情,无论如何你的问题的解决方案是大括号:{ }

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

看看大括号是如何解决歧义的,因为如果没有它们,php就不会知道你是指${$db}[$i]还是${$db[$i]}