2015-05-07 1 views
3

Во-первых, я меняю строку на массив. И когда я пытаюсь выполнить поиск внутри этого массива, не удается выполнить поиск значения второго массива. Ниже приведен мой код.in_array() не работает больше, как ожидалось, если массив создается с помощью explode()

//my string 
$a = 'normal, admin'; 
//Change string to array 
$arr = explode(",",$a); 
// Search by array value 
dd(in_array("admin", $arr)); //got false 

Но когда я пытаюсь найти что-то вроде следующего, это работа.

//my string 
$a = 'normal, admin'; 
//Change string to array 
$arr = explode(",",$a); 
// Search by array value 
dd(in_array("normal", $arr)); //got true 

ответ

4

Это потому, что значение admin занимает ведущее место из explode()! Вы можете увидеть это, если вы делаете:

var_dump($arr); 

Выход:

array(2) { 
    [0]=> 
    string(6) "normal" 
    [1]=> 
    string(6) " admin" 
     //^ ^See here 
} 

Теперь, чтобы решить эту проблему, просто применить trim() в сочетании с array_map() для каждого значения массива, как это:

$arr = array_map("trim", $arr); 
+0

'$ arr = array_amp (" trim ", $ arr);' is' $ arr = array_map ("trim", $ arr); '? Это работает. Спасибо –

+0

@SetKyarWaLar Ах да, маленькая опечатка; Пожалуйста! – Rizier123

1

У вас есть массив из такой строки: Вы строку:

$a = 'normal, admin'; 

После использования взрывается придет любой массив так:

$arr = array('normal',' admin'); 

Я хочу сказать, у вас есть место в администраторе, поэтому не искать админ в in_array функции.

Решение: Перед использованием взрываются использовать эту функцию:

$newstr = str_replace(" ", "", $a); 
$arr = explode(',',$newstr); 
2

Да первый один не будет работать, как вы можете видеть, что есть дополнительное пространство перед вашим admin, который будет работать не будет нужно использовать trim и array_map функции перед проверкой результата

$a = 'normal, admin'; 
//Change string to array 

$arr = array_map('trim',explode(",",$a)); 
// Search by array value 
var_dump($arr); 
var_dump(in_array("admin", $arr)); 

выход:

array(2) { [0]=> string(6) "normal" [1]=> string(5) "admin" } bool(true) 
+0

@SetKyarWaLar вы можете принять один из этих ответов, который заставит этот ответ рассматриваться как разрешенный. Спасибо. –

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