比较 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()