in_array 在 if 语句中使用内爆时失败

in_array fails when using implode in if statement

这个尝试是为了创建一个搜索条件,最终将处理输出以根据匹配的递增顺序显示结果

"PHP implode function in if and foreach condition [closed]" 是一个不同的问题!

为什么下面的代码会失败?

$terms = array("HELLO", "HI", "HOWDY");
$row = array("HELLO", "HI", "Hey");
$chkcond = "in_array('".implode("',$"."row".")"." && in_array"."('",$terms)."',$"."row)";

echo "$chkcond<br/><br/>";

if ($chkcond) {
    echo "All Found in Array !<br>";}else{echo "Not Found !<br/>";
}

回显结果为

in_array('HELLO',$row) && in_array('HI',$row) && in_array('HOWDY',$row)

并且if条件输出"All Found in Array !"

if 条件表明所有三个项都必须在行数组中才能成为“All Found in Array”,那么为什么在“[=17] 时返回 True =]" 行数组中不存在?

只需使用 array_diff http://php.net/array_diff

<?php
$terms=array("HELLO","HI","HOWDY");
$row=array("HELLO","HI","Hey");

$diff = array_diff($terms, $row);

if (0 === count($diff)){echo "All terms Found in Array row !<br>";}else{echo "Not all terms Found in Array row !<br>";}


$terms=array("HELLO","HI","HOWDY");
$row=array("HELLO","HI","Hey","HOWDY");

$diff = array_diff($terms, $row);

if (0 === count($diff)){echo "All terms Found in Array row !<br>";}else{echo "Not all terms Found in Array row !<br>";}

你可以使用 array_diff

类似于:

<?php
$terms=array("HELLO","HI","HOWDY");
$row=array("HELLO","HI","Hey");
$chkcond=array_diff($terms, $row);

var_dump($chkcond);

if(empty($chkcond)) {
    echo "All Found in Array !<br>";
} else {
    echo "Not Found !<br>";
}
?>

不确定您在尝试什么,但您可以使用 array_diff。

$terms = array("HELLO","HI","HOWDY");
$row   = array("HELLO","HI","Hey");

$differences = array_diff($terms, $row);

if ($differences) {
  echo "All Found in array";
} else {
  "Not Found !<br>";
}

https://secure.php.net/manual/en/function.array-diff.php

如果您想坚持使用 in_array,您需要循环您的条款:

<?php
    $terms=array("HELLO","HI","HOWDY");
    $row=array("HELLO","HI","Hey");

    $chkcond = true;
    foreach($row as $needle){
        if(!in_array($needle, $terms)){
            $chkcond = false;
            break;         
        }
    }

    if($chkcond){
        echo "All Found in Array !<br>";
    } else {
        echo "Not Found !<br>";
    }
?>

哎呀重新阅读手册http://php.net/manual/en/function.in-array.php你甚至不需要循环:

<?php
    $terms=array("HELLO","HI","HOWDY");
    $row=array("HELLO","HI","Hey");
    if(in_array($row, $terms)){
        echo "All Found in Array !<br>";
    } else {
        echo "Not Found !<br>";
    }

?>