首页 > 解决方案 > 基于使用 php in_array 从数据库中获取值选择的多个选项

问题描述

我有这样的php变量$SubTopicid = $L_array["subtopicid"];

然后像这样在选项标签中

<option <?php if (In_array($URow[0],explode(" ",$SubTopicid))) echo 'selected' ; ?> value="<?php echo $URow[0];?>"><?php echo $URow[1];?></option>

问题是未选择多个值

当我爆炸这个变量时$SubTopicids = explode(" ",$SubTopicid);

得到这种方式的结果

Array ( [0] => 248 ) Array ( [0] => 72 ) Array ( [0] => 72,248 )

选择了像248这样的单值,但在选项中没有选择像72,248这样的双值

标签: php

解决方案


因此,如果我理解正确,您要检查标记为$SubTopicid.

如果您$SubTopicid可以同时包含单个选项和多个选项,您可能希望在while循环之前分解它们。

考虑以下:

$SubTopicid = "248 72 72,248";
$SubTopicids = array();
foreach(explode(" ",$SubTopicid ) as $elem)
    $SubTopicids = array_merge($SubTopicids ,explode(",",$elem));

在这种情况下,您的数组将如下所示:

Array
(
    [0] => 248
    [1] => 72
    [2] => 72
    [3] => 248
)

如果需要,您可以使用数组唯一。

现在,当您运行时:

while($URow=mysql_fetch_array($RowRes)){
    <option <?php if (In_array($URow[0],$SubTopicids)) echo 'selected' ; ?> value="<?php echo $URow[0];?>"><?php echo $URow[1];?></option>
}

您会将所有给定选项标记为选中。


推荐阅读