php在数组中搜索php数组值是';t功能

php在数组中搜索php数组值是';t功能,php,arrays,Php,Arrays,出于某种奇怪的原因 if(in_array("January", $season)){ 当我在in_数组中指定“一月”时,它与数组值匹配。但是当我使用包含单词“一月”的$search\u string时,它不匹配。为什么会这样?我删除了单词前后的空格,但仍然不匹配 $season = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "N

出于某种奇怪的原因

if(in_array("January", $season)){
当我在in_数组中指定“一月”时,它与数组值匹配。但是当我使用包含单词“一月”的
$search\u string
时,它不匹配。为什么会这样?我删除了单词前后的空格,但仍然不匹配

$season = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

print_r($lines);
Array ( [0] => January - March, November
[1] => 2 travelers:  Adult: $9,499 Child: $7,125
[2] => 4 travelers:  Adult: $8,315 Child: $6,235
[3] => 6 travelers:  Adult: $7,975 Child: $5,980
[4] => June - October, December
[5] => 2 travelers:  Adult: $10,799 Child: $8,099
[6] => 4 travelers:  Adult: $9,835 Child: $7,375
[7] => 6 travelers:  Adult: $9,535 Child: $7,150
)

var_dump($lines);
array(8) { [0]=> string(47) "January - March, November
" [1]=> string(48) "2 travelers:  Adult: $9,499 Child: $7,125
" [2]=> string(49) "4 travelers:  Adult: $8,315 Child: $6,235
" [3]=> string(47) "6 travelers:  Adult: $7,975 Child: $5,980
" [4]=> string(46) "June - October, December
" [5]=> string(49) "2 travelers:  Adult: $10,799 Child: $8,099
" [6]=> string(49) "4 travelers:  Adult: $9,835 Child: $7,375
" [7]=> string(47) "6 travelers:  Adult: $9,535 Child: $7,150
"
}

     foreach($lines as $key => $value){
         $search_string = explode("-", $value);
         $search_string = $search_string[0];
         echo "--"; echo $search_string = trim($search_string); echo "--"; //  --January-- 

         if(in_array("January", $season)){
             echo "Match found";
         } else {
             echo "Match not found";
         }
     }
以下是我到目前为止得到的信息:

@精灵,这里是创建阵列线的地方

     $lines = array();
     foreach(preg_split("/((\r?\n)|(\r\n?))/", $seasonal_price) as $line){
         // Only add to array for lines with content
         if(trim($line)!="") $lines[] = $line;
     }
这是我的最终代码和最终输出:

             //Seasonal price
             $seasonal_price = $row['post_content'];

             //Split individual lines into an array
             $lines = preg_split("/[\r\n]+/", strip_tags($seasonal_price), -1, PREG_SPLIT_NO_EMPTY);

             //Define seasons
             $season = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

             echo "<br>";
             foreach ($lines as $key => $value) {

                     $search_string = explode("-", $value);
                     $search_string = trim($search_string[0]);

                     if (in_array($search_string, $season)) {
                         echo '<i class="fa fa-money"></i>&nbsp;<span class="head" style="font-weight:bold;">';echo$value;echo'</span>';
                     } else {
                         echo '<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';echo$value;echo'</span>';
                     }
                     echo "<br>";
            }

        ?>
//季节性价格
$seasonal_price=$row['post_内容];
//将各行拆分为一个数组
$lines=preg\u split(“/[\r\n]+/”,strip\u标签($seasonal\u price),-1,preg\u split\u NO\u空);
//定义季节
$season=数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
回声“
”; foreach($key=>$value的行){ $search_string=explode(“-”,$value); $search_string=trim($search_string[0]); if(在数组中($search\u string,$seasure)){ 回显“”;回显$value;回显“”; }否则{ 回显“”;回显$value;回显“”; } 回声“
”; } ?>
代码部分反映了标签一月和六月的下图结果

问题是,由于浏览器窗口上的html容器,我没有看到隐藏的
标记。我没有看到标记,它被解析为html标记

尝试以下操作:

$lines = preg_split("/[\r\n]+/", strip_tags($seasonal_price), -1, PREG_SPLIT_NO_EMPTY);

foreach ($lines as $key => $value) {
    $search_string = explode("-", $value);
    $search_string = trim($search_string[0]);
    //echo "--"; echo $search_string = trim($search_string); echo "--"; //  --January-- 

    if (in_array($search_string, $season)) {
        echo "Match found";
    } else {
        echo "Match not found";
    }
    echo "\r\n";
}
产出:

Match found
Match not found
Match not found
Match not found
Match found
Match not found
Match not found
Match not found
就像它应该是一样,根据您的输入
$lines


更新:正如我们在聊天中发现的那样,填充
$seasonal_price
的数据来自数据库,其中包含:

<strong>January - March, November</strong><br/> 

2 travelers:  Adult: $9,499 Child: $7,125<br/> 

4 travelers:  Adult: $8,315 Child: $6,235<br/> 

6 travelers:  Adult: $7,975 Child: $5,980<br/> 

<strong>June - October, December</strong><br/> 

2 travelers:  Adult: $10,799 Child: $8,099<br/> 

4 travelers:  Adult: $9,835 Child: $7,375<br/> 

6 travelers:  Adult: $9,535 Child: $7,150<br/>
一月至三月、十一月
2名旅行者:成人:9499美元儿童:7125美元
4名旅行者:成人:8315美元儿童:6235美元
6名旅行者:成人:$7975儿童:$5980
六月至十月、十二月
2名旅行者:成人:10799美元儿童:8099美元
4名旅行者:成人:$9835儿童:$7375
6名旅行者:成人:9535美元儿童:7150美元

因此,我在我的答案中添加了一个
strip_tags()
call

我看不出您的代码中有任何问题。在我的机器上正常工作后,请检查一下,你能不能
var\u dump($lines)
?@vijaykumar尝试用$search替换“一月”_string@shyammakwana.me这是一个问题,我想,当你评论你的
echo
行时,你忘记了
trim()
你的
我更改了这个:
$search\u string=trim($search\u string[0])注释一行,然后将函数放在一行之上,这有关系吗?trim已经在那里了,你刚刚发表了评论。看看我的评论。我的答案中反映了这一点。让我们等待@unixmiah将显示预期的输出,如果有必要,我将更改我的答案。@spirit由于某种原因,您的代码可以工作,但它对我不起作用。我把密码贴在我的问题上。