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