比较 php 中字符串数组的元素
Compare element of string array in php
我有两个数组都有字符串类型的元素。
示例:
第一个数组
$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 />";
}
}
}
?>
我的代码仍然给我奇怪的结果。那么,如何这样创建,=> (0) 意思是选中。
(0)Login (0)Printer (0)Monitor ()Computer ()Network ()Others
这应该适合你:
(您不必执行嵌套的 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 />";
}
?>
你有两个循环,但你只想循环第一个数组。第二个仅用于检查。
循环的一种可能性是:
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";
}
}
您不需要两个 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()
。
我有两个数组都有字符串类型的元素。 示例:
第一个数组
$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 />";
}
}
}
?>
我的代码仍然给我奇怪的结果。那么,如何这样创建,=> (0) 意思是选中。
(0)Login (0)Printer (0)Monitor ()Computer ()Network ()Others
这应该适合你:
(您不必执行嵌套的 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 />";
}
?>
你有两个循环,但你只想循环第一个数组。第二个仅用于检查。
循环的一种可能性是:
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";
}
}
您不需要两个 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()
。