php程序输出错误

时间:2015-10-09 09:06:00

标签: php

以下是我的代码,实际上o / p应该是hi ..但它没有给出

<?php

    $arr=array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    $c='xyz,ccc';

    if(in_array(isset($c) && $c,$arr))
    {
        echo 'hi';
    }
    else 
    {
        echo 'no';
    }

?>

输出:喜

实际结果应为&#39; no&#39;。

3 个答案:

答案 0 :(得分:1)

<?php
    $listDays=array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    $day='Sunday'; //You cant test both days ! Just one value at a time

    if(true === in_array($day, $listDays))
    {
        echo 'hi';
    }
    else 
    {
        echo 'no';
    }

?>

如果你想测试不同的日子,可以选择第二个

<?php
    $listDays=array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    $dayToTest='Sunday, Monday'; //Here we have multiple days

    $tabTest = preg_split(',', $day); //split into an array

    //Then test for each string in tabTest
    foreach($tabTest as $string)
    {
         if(true === in_array($string, $listDays))
         {
            echo $string.' is OK';
         }
         else 
         {
            echo 'no';
         }
    }


?>

答案 1 :(得分:1)

旁注,这是错误的代码:

in_array(isset($weekendArr) && $weekendArr,$arr)

就像

一样
isset($weekendArr) && in_array($weekendArr,$arr)

和in_array并不严格,所以这个

in_array(true,array('w','s'))

将永远是真的

这样做:

in_array(true,array('w','s'),true)

你看。

你不能用数组检查一个数组,$ needle在这里是一个STRING。 唯一的解决方案是将STRING分成两个值,然后检查两次为TRUE

$c='Sunday,Monday';
foreach(explode(',',$c) as $check){
  if(in_array($c,$arr,true))
  {
    echo $check.' is in array';
  }
  else 
  {
    echo $check.' is NOT in array';
  }
}

希望有所帮助。

答案 2 :(得分:-1)

将您的代码更改为:

<?php

    $arr=array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    $c='Sunday,Monday';

    if(in_array(isset($c) && $c,$arr))
    {
        echo 'hi';
    }
    else 
    {
        echo 'no';
    }