2016-04-08 3 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, Enumerator? – KDOT

+0

Это первый раз, когда я слышал о Линке. Это то, что я могу использовать для этого? –

+0

Linq используется для запроса через Arrays - как и для базы данных - и доступен на PHP. Просто найдите * Linq для PHP * и есть много бесплатных фреймворков; он позволяет вам искать строку или целое число через массив и, я думаю, он также поддерживает объекты. – KDOT

ответ

2

strpos возвращает строку позиции, красный находится в положении 0 Вы должны изменить условие:

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

как ложь возвращается, если нет матча на всех

+0

Большое спасибо. Это сейчас работает. –

Смежные вопросы