У меня есть два массива, оба имеют элементы в строковом типе.
Пример :
Первый массив
$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 ($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)
<?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
массив и проверить, присутствует ли этот элемент в $selected_complaint
использование массива in_array()
. Попробуйте использовать:
<?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()
,