尝试在<select> </select> </options>中将数组的内容作为<options>进行回显

时间:2013-06-17 22:33:40

标签: php

当我var_dump()时,我的数组看起来像这样:

array(1) { ["bussiness"]=> array(5) { [0]=> string(8) "business" [1]=> string(9) "bossiness" [2]=> string(8) "busyness" [3]=> string(9) "bushiness" [4]=> string(9) "fussiness" } }

我试图将每个元素都放在一个单独的内部。

我认为这就像使用foreach迭代数组并回显数组中的每个元素一样简单,但是我正在尝试并且它似乎不起作用。

我得到的输出是两个s表示Array而另一个是空白。

所以标记是这样的:

<select>
    <option>Array</option>
    <option></option>
</select>

我做错了什么,为什么代码不回显数组的内容。它甚至没有迭代整个数组,只有两个项目,因此两个s。

这是我的代码:

var_dump($bad_words);
echo "Did you mean: <select> \n";
foreach($bad_words as $suggestion){
    echo "<option>".$suggestion."</option> \n";
}
echo "</select>";

3 个答案:

答案 0 :(得分:3)

您正在处理数组数组

您的代码应该阅读。

var_dump($bad_words);
echo "Did you mean: <select> \n";
foreach($bad_words["bussiness"] as $suggestion){
    echo "<option>".$suggestion."</option> \n";
}
echo "</select>";

如果您只想处理嵌套数组中的第一个元素,可以使用

var_dump($bad_words);
$term = array_shift($bad_words);
echo "Did you mean: <select> \n";
foreach($term as $suggestion){
    echo "<option>".$suggestion."</option> \n";
}
echo "</select>";

答案 1 :(得分:1)

应该是:

var_dump($bad_words);
echo "Did you mean: <select> \n";
foreach($bad_words["bussiness"] as $k=>$v){
    echo "<option value=\"$k\">".$v."</option> \n";
}
echo "</select>";

答案 2 :(得分:0)

如果它有助于您了解数组的含义,请阅读。你做的var_dump()是你问题的答案,让我们来看看。

 array(1) { ["bussiness"]=> array(5) { [0]=> string(8) "business" [1]=> string(9) "bossiness" 
 [2]=> string(8) "busyness" [3]=> string(9) "bushiness" [4]=> string(9) "fussiness" } }

首先我们有 array(1)。这告诉我们$bad_words是一个包含 1 值的数组(我们还不知道的)。好的,到目前为止一切顺利。然后我们有

["bussiness"]=> array(5)

这是数组$bad_words中的第一个也是唯一一个元素。我们有什么? [“bussiness”] 代表,您可以通过它来访问该元素的值。

$bad_words['bussiness'] is { [0]=> string(8) "business" [1]=> string(9) "bossiness" [2]=> 
 string(8) "busyness" [3]=> string(9) "bushiness" [4]=> string(9) "fussiness" }

您可以看到访问的值是包含4个值的另一个数组,并且该数组的每个值的键都是数字值(0,1,2 ...)。

在这里看foreach loop正在发生的事情:

foreach($bad_words as $suggestion){ --> $suggestion = array("business", "bossiness", "busy...);
    echo "<option>".$suggestion."</option> \n";
}

因此,当您尝试将其打印出来时,您会得到“数组”。这就是为什么上面以某种方式发布的答案是$ bad_words的第一个元素并且循环它的值(因为它是一个数组)。

这是数组数组的含义。下次的提示是做其他类型的var_dumps(),例如:

foreach($bad_words as $suggestion){
    var_dump($suggestion);
}

这可能会帮助您弄清楚发生了什么。

希望这有助于解决数组有时可能出现的纠结!