我有两个数组都有字符串类型的元素。 示例:
First Array
$default_complaint = array("Login", "Printer", "Monitor", "Computer",
"Network", "Other");
第二个数组
$selected_complaint = explode(" ", $s['kindof_request']);
// Ex : it return like this => array ("Login", "Printer", "Monitor");
现在,我如何通过比较上面给出的两个数组来创建在html中勾选的复选框。所以,我这样创造:
<?php
$default_complaint = array("Login", "Printer", "Monitor", "Computer", "Network", "Lain-lain");
$selected_complaint = explode(" ", $s['kindof_request']);
foreach ($default_complaint as $dc) {
foreach ($selected_complaint as $sc) {
$check = strcmp($dc, $sc) ;
if ($check == 0) { //True
echo '<input type="checkbox" checked="checked">'. "$sc" ."<br />";
} else{ //false
echo '<input type="checkbox">'. "$dc"."<br />";
}
}
}
?>
我的代码仍然给我奇怪的结果。那么,如何创建这样的,=&gt; (0)意思是检查。
(0)Login (0)Printer (0)Monitor ()Computer ()Network ()Others
答案 0 :(得分:2)
这应该适合你:
(你不必做一个嵌套的foreach循环)
<?php
$default_complaint = array("Login", "Printer", "Monitor", "Computer", "Network", "Lain-lain");
$selected_complaint = explode(" ", $s['kindof_request']);
foreach($default_complaint as $k => $v) {
if(isset($selected_complaint[$k]) && in_array($selected_complaint[$k], $default_complaint))
echo '<input type="checkbox" checked>' . $v . "<br />";
else
echo '<input type="checkbox">' . $v . "<br />";
}
?>
答案 1 :(得分:1)
你有两个循环,但你只想循环第一个数组。第二个仅用于检查。
循环的一种可能性是:
foreach ($default_complaint as $dc) {
if (array_search($dc, $selected_complaint) !== FALSE) {
echo '<input type="checkbox" checked="checked">'. "$dc" ."<br />\n";
} else{
echo '<input type="checkbox">'. "$dc"."<br />\n";
}
}
答案 2 :(得分:1)
您不需要两个foreach
循环。只有一个人会这样做。循环遍历$default_complaint
数组,并使用in_array()
检查$selected_complaint
数组中是否存在该元素。尝试使用:
<?php
$default_complaint = array("Login", "Printer", "Monitor", "Computer", "Network", "Other");
$selected_complaint = explode(" ", $s['kindof_request']);
foreach ($default_complaint as $dc)
{
if (in_array($dc, $selected_complaint))
echo '<input type="checkbox" checked>' . $dc . '<br>';
else
echo '<input type="checkbox">' . $dc . '<br>';
}
?>
您也可以尝试使用array_search()
代替in_array()
。