Функция взрыва PHP позволяет мне обнаруживать только первый элемент массива, когда я ищу in_array. Почему?

Я преобразовал данные флажка в строку для хранения в моей базе данных.

Однако, когда я пытаюсь преобразовать строку обратно в массив с помощью функции взрыва, у меня возникают проблемы с поиском в in_array чего-либо, кроме первого элемента. Почему?

$rolepref = explode(',', $roles);
print_r($rolepref) = [0] Strategy [1] Operations
if (in_array("Strategy", $rolepref) { echo "yes" } => Will echo yes
if (in_array("Operations", $rolepref) { echo "yes" } => Does not work

Что мне здесь не хватает? Заранее спасибо!


person jlim    schedule 11.10.2017    source источник
comment
Можете ли вы опубликовать фактический массив, который вы пытаетесь проверить? и собственно код. Похоже, вы только что напечатали это, поскольку оно не завершено (отсутствуют закрывающие скобки в операторах if).   -  person giolliano sulit    schedule 11.10.2017


Ответы (3)


Скорее всего, у вас есть пробелы после данных разнесения. Попробуйте взорваться с отделкой

$roles = "Strategy, Operations";
$rolepref = array_map('trim', explode(',', $roles)); //trim and explode data
if (in_array("Strategy", $rolepref)) { echo "yes"; }
if (in_array("Operations", $rolepref)) { echo "yes"; }
person B. Desai    schedule 11.10.2017

У вас может быть $roles как: "Strategy, Operations", и когда вы explode используете ,, это даст вам два элемента: "Strategy" и " Operations"... Обратите внимание на дополнительный пробел перед словом Операции. Поэтому обрежьте пространство перед сравнением каждого элемента.

$roles = "Strategy, Operations"; // lets say $rolepref = array_map('trim', explode(',', $roles)); if (in_array("Strategy", $rolepref)) { echo "yes"; } if (in_array("Operations", $rolepref)) { echo "yes"; }

person shahsani    schedule 11.10.2017

in_array возвращает true, если находит значение EXACT. Возможно, ваш массив не совсем такой, попробуйте очистить его с помощью функции trim().

Код ниже работает.

$array = [
    0 => 'Strategy',
    1 => 'Operations',
];

if (in_array("Strategy", $array))
{
    echo "yes s <br />";
}

if (in_array("Operations", $array))
{
    echo "yes o <br />";
}
person rossedlin    schedule 11.10.2017