2017-10-11 17 views
0

J'ai converti les données de la case à cocher en une chaîne à stocker dans ma base de données.La fonction PHP explode ne me permet que de détecter le premier élément du tableau quand je cherche in_array. Pourquoi?

Cependant, lorsque j'essaie de reconvertir la chaîne en tableau avec la fonction d'éclatement, j'ai du mal à chercher dans in_array quoi que ce soit en dehors du premier élément. Pourquoi?

$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 

Que manque-t-il ici? Merci d'avance!

+0

Pouvez-vous publier le tableau que vous essayez de vérifier? et le code réel. On dirait que vous venez de taper ceci car il n'est pas complet (les parenthèses de fermeture manquantes sur les instructions if). –

Répondre

1

Il est très probable que vous ayez des espaces blancs après l'éclatement des données. Essayez d'exploser avec garniture

$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"; } 
1

Vous pouvez avoir votre $roles comme: "Strategy, Operations" et quand vous explode l'aide d'un , il vous donnera deux éléments: "Strategy" et " Operations" ... Notez l'espace supplémentaire avant le mot opérations. Donc, coupez l'espace avant de comparer chaque élément.

$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"; }

0

in_array renvoie true si elle trouve un EXACT valeur. Il est possible que votre tableau ne soit pas exactement le même, essayez de le nettoyer avec trim()

Le code ci-dessous fonctionne.

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

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

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