php in_array со строками, содержащими «

#php

#php

Вопрос:

У меня есть массив, подобный :

 $array = array('a amp; b' => 'A amp; B', 'c amp; d'=>'C amp; D');

$string = 'a amp; b';
  

когда я это делаю in_array(ucwords($string),$array) , я получаю FALSE
если я это сделаю array_key_exists($string, $array) , я также получу FALSE

есть идеи? Спасибо

Обновление: похоже, что проблема заключалась в том, как я собирал $string (используя fuelphp Uri:: Segment(3) ), хотя визуально собранная строка кажется идентичной, по какой-то причине это не так. Спасибо за ваш быстрый ввод

Комментарии:

1. Работает здесь: codepad.org/ZWXn9Wlh …. ваш код на самом деле выдает ошибку, потому что вы пропустили array , но он не возвращает false .

2. вы отредактировали свой код, но теперь он вернет true для обеих функций, так в чем же ваша реальная проблема?

3. Спасибо, Феликс, похоже, что моя проблема возникает откуда-то еще, в основном из-за того, как я собираю свою переменную $string. спасибо за вашу помощь

4. Я получаю свою строку $string из URL-адреса, используя fuelphp Uri::segment() … Я должен понять, почему возвращаемая переменная не идентична, даже если так кажется

Ответ №1:

Ваш $array на самом деле не является массивом?

 $array = array('a amp; b' => 'A amp; B', 'c amp; d' => 'C amp; D');
  

Вместо:

 $array = ('a amp; b' => 'A amp; B', 'c amp; d' => 'C amp; D');
  

Ответ №2:

Это работает так, как можно было бы ожидать от меня:http://codepad.org/U1WtWiGe

Проблема с вашим кодом заключается в том, что вы пропустили array ключевое слово перед вашим массивом, и поэтому он не будет массивом.

 $array = array('a amp; b' => 'A amp; B', 'c amp; d' => 'C amp; D');
         ^^^^^
  

Кстати, я немного удивлен, что вам вообще удалось его запустить, поскольку вы получили бы ошибку синтаксического анализа с предоставленным вами кодом.