1

我想开始说我不想使用 Javascript....

我相信我有一个正确返回的数组,但是我只在下拉列表中显示数组中的第一个条目。

这是数组的问题吗?或有这个功能?

foreach($array as $key=>$value){
    $html = "<option value='$key'>$value</key>";
}

echo "<select name="process">$html</select>";
4

3 回答 3

2

您必须使用连接运算符 ( .):

$html = '';
foreach($array as $key => $value)
{
    $html.= "<option value='$key'>$value</option>";
}

echo "<select name=\"process\">$html</select>";

但是,查看您之前发布的函数,mysql_fetch_assoc一次只返回一行。相反,您需要遍历它。以下应该足够了:

function tasks_list($p_id) { 
    $project_tasks = array(); 
    $p_id = (int)
    $p_id; 
    $func_num_args = func_num_args(); 
    $func_get_args = func_get_args(); 

    $result = mysql_query("SELECT task_name FROM tasks WHERE project_id = $p_id");
    while($project_tasks = mysql_fetch_assoc($result))
    {
        $html.= "<option value='".$project_tasks['task_name']."'>".$project_tasks['task_name']."</option>";
    }

    echo "<select name=\"process\">$html</select>";
}
于 2013-04-16T14:49:00.687 回答
1
$html = "";
foreach ($array as $key => $value){
    $html .= "<option value='$key'>$value</option>";
}
echo "<select name='process'>$html</select>";

=重新分配;.=追加

如果您使用=$html在每次迭代中重新分配,那么$html它将包含最后一次迭代的结果 - 一个选项。

于 2013-04-16T14:48:59.533 回答
1

您需要连接字符串。在开始 for 循环之前先初始化$html为空字符串。

$html = '';
foreach($array as $key => $value)
{
    $html .= "<option value='$key'>$value</key>";
    // same as $html = $html . "<option value='$key'>$value</key>";
}

注意:您的代码中还有一个错字:

echo "<select name="process">$html</select>";

应该是:

echo "<select name=\"process\">$html</select>";

或者

echo "<select name='process'>$html</select>";

如果这就是你的意思。

于 2013-04-16T14:51:19.580 回答