2016-04-08 120 views
1

我正在测试一个概念,以查看它是否适合稍后更复杂的事情。我有个字符串和数组。我想搜索字符串以查看它是否包含数组中的任何值。当它发生时,我希望它回显数组中匹配的键和值。我拥有的代码是这样的。搜索数组时搜索结果缺少匹配值

<?php 

$string = '[red,yellow,[blue,[green'; 
$colour = array ('red','blue','yellow','green'); 

foreach($colour as $key => $value){ 

    if(strpos($string,'['.$value)){ 
      echo $key." ".$value."<br>"; 
     } 
    } 

?> 

这一点,我认为,应该回到它匹配 “[彩”

我认为这将返回结果什么:

0 red 
1 blue 
3 green 

它返回

1 blue 
3 green 

不任何人都知道为什么它不会在[红色? 与[在字符串的起始位置是正确的?

+0

为什么不直接使用Linq返回?或者如果你使用Color的,一个枚举器? – KDOT

+0

这是我第一次听说Linq。这是我可以使用的吗? –

+0

Linq用于通过数组查询 - 就像您将要使用数据库一样 - 并可在PHP上使用。只需搜索* Linq for PHP *即可获得大量免费的框架;它允许你通过一个数组搜索一个字符串或整数,我认为它也支持对象。 – KDOT

回答

2

strpos返回字符串的位置,红色是位置0 你应该改变你的条件:

if(strpos($string,'['.$value) !== false){ 

假,如果没有匹配的所有

+0

非常感谢。现在正在工作。 –