以下是我的代码,实际上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;。
答案 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';
}