如何匹配数组中的文本到一个字符串,并返回它的值如果为true?

问题描述:

我想了解如何匹配一个文本行的数组,如果发现数组内的文本,然后我想返回该值。如何匹配数组中的文本到一个字符串,并返回它的值如果为true?

我试过以下,但似乎没有得到返回。

$catArray = array(
    '0' => 'breakfast', 
    '1' => 'lunch', 
    '2' => 'dinner', 
); 

$text = 'It is your breakfast'; 

foreach($catArray as $cat){ 
    if(strpos($cat, $text) !== false){ 
     return $cat; 
    } 
} 

通过这个逻辑,breakfast应该返回。

+3

你有参数传递给strpos以错误的方式 – Clive

+1

从http://php.net/manual/en/function.strpos.php,对strpos签名是'混合strpos(字符串$大海捞针,混合$针[,int $ offset = 0])'。试试'strpos($ text,$ cat)'。 – Nima

+0

大声笑..我老实说起了超过27个小时,眼睛模糊,我觉得像一个白痴错过这样的事情..谢谢@ Clive和尼玛 – Craig

$catArray = array(
    '0' => 'breakfast', 
    '1' => 'lunch', 
    '2' => 'dinner', 
); 
$text = 'It is your breakfast'; 

foreach($catArray as $cat){ 
    if(strpos($text, $cat) !== false){ 
     echo $cat; 
    } 
} 

回报 breakfast

所以基本上扭转haystack and the needle

你正在做它在一个错误的方式,你也正在返回变量,而不是印刷。 这里是正确的语法:

strpos(<srting>,<find>,<start-optional>) 

我修改代码,现在它正在工作。

$catArray = array(
    '0' => 'breakfast', 
    '1' => 'lunch', 
    '2' => 'dinner', 
); 

$text = 'It is your breakfast'; 

foreach($catArray as $cat){ 
    if(strpos($text, $cat) !== false){ 
     echo($cat); 
    } 
}