gpt4 book ai didi

php - 使用 PHP unserialize() 多选标签中的多个选择值

转载 作者:行者123 更新时间:2023-11-29 23:17:30 26 4
gpt4 key购买 nike

我选择了具有多个属性的标签,我使用 PHP serialize 函数作为序列化数组将多个值保存在数据库中:

我插入的数据库数组:

a:9:{i:0;s:8:"Arkansas";i:1;s:10:"California";i:2;s:8:"Delaware";i:3;s:7:"Montana";i:4;s:14:"North Carolina";i:5;s:12:"North Dakota";i:6;s:8:"Nebraska";i:7;s:13:"New Hampshire";i:8;s:10:"New Jersey";}

现在,我想在我的 SELECT 下拉列表中显示这些选定的值,其中数据库中的值的 SELECTED 属性将显示为未选定。

示例:我有表,我选择了纽约、迈阿密并将它们作为序列化数组<保存到数据库中/强>。现在,在编辑页面上,我想将纽约、迈阿密显示为已选择,而其余州将显示为未选择。

这是我正在编写的代码:

$result = $mysqli->query("SELECT * FROM `web_states`") or die (mysqli_error());
$menu = "<select name='jurisdiction_state[]' class='multiselectState' id='focusedInput' multiple='multiple' size='15' required>";
$author = unserialize($data);
foreach( $author as $index=>$key ) {
$authorRecs = $this->getStateData($key);
$Recs = $authorRecs->fetch_object();
$menu .= "<option value='".$Recs->state_name."' selected=selected'>".$Recs->state_name."</option>";
}
$menu .= "</select>";
echo $menu;

最佳答案

我自己解决了,现在问题已经解决了。从我之前的代码来看,这是不可能的。

这是数据库中的序列化数组:

a:9:{i:0;s:8:"Arkansas";i:1;s:10:"California";i:2;s:8:"Delaware";i:3;s:7:"Montana";i:4;s:14:"North Carolina";i:5;s:12:"North Dakota";i:6;s:8:"Nebraska";i:7;s:13:"New Hampshire";i:8;s:10:"New Jersey";}

我只是使用以下方法对其进行反序列化:

$data = unserialize(a:9:{i:0;s:8:"Arkansas";i:1;s:10:"California";i:2;s:8:"Delaware";i:3;s:7:"Montana";i:4;s:14:"North Carolina";i:5;s:12:"North Dakota";i:6;s:8:"Nebraska";i:7;s:13:"New Hampshire";i:8;s:10:"New Jersey";})

并获取该数组的第一个索引,该索引以数组的形式返回状态名称

最后我使用了in_array()来检查选中和未选中的内容并得到了最终结果。

这是工作代码。

$result = $mysqli->query("SELECT state_name FROM `web_states`") or die (mysqli_error());

$menu = "<select name='jurisdiction_state[]' class='multiselectState' id='focusedInput' multiple='multiple' size='15' required>";

$author[1] = unserialize($data);

while($rcData = $result->fetch_array()){

if(in_array($rcData['state_name'], $author[1])){

$menu .= "<option value='".$rcData['state_name']."' selected='selected'>".$rcData['state_name']."</option>";

}else{

$menu .= "<option value='".$rcData['state_name']."'>".$rcData['state_name']."</option>";

}
}
$menu .= "</select>";
echo $menu;

希望它对某人有帮助。

关于php - 使用 PHP unserialize() 多选标签中的多个选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27636604/

26 4 0