Voici mon code:PHP in_array() ne passera pas if ... else
$convertTitle = $this->art->catList(); // gets an array which has other arrays as its values
foreach($convertTitle as $cT){ // cycle through the smaller arrays
if(in_array($cat, $cT)){ // if "xx" is found in a smaller array
$data['title'] = $cT['full']; // set the $title to the full form corresponding to the abbreviated xx ($cat)
}
if(!in_array($cat, $cT)){
$data['title'] = "Sorry, an error occurred."; // if it's not found, choose an alternate title
$data['error'] = 1; // throw the error
}
}
Pour debug, j'ai l'impression a été in_array($cat, $cT)
et quand je pense à, il délivre en sortie 1. Lorsque Je m'y attends, ça sort aussi 0. Donc, il semble que ça fonctionne. Je peux même print($data['title']);
et le titre correct apparaît! Mais indépendamment du fait que in_array()
sorte 1 ou 0, ma seconde instruction if écrase toujours la première et l'erreur I $ sort toujours 1. Qu'est-ce qui donne?
Quelques solutions que j'ai essayé:
if(!in_array($cat, $cT)...
if(in_array($cat, $cT) == false/0/null)...
else...
Je ne sais vraiment pas pourquoi il ne sort le titre propre lorsque le titre est situé dans la variable quand je veux que ce soit!
EDIT: est ici print_r($convertTitle);
Array ([0] => Array ([handle] => dr [full] => Drawings) [1] => Array ([handle] => f [full] => Films & Stills) [2] => Array ([handle] => pa [full] => Paintings) [3] => Array ([handle] => ph [full] => Photography) [4] => Array ([handle] => po [full] => Portraits))
Vous devriez probablement juste utiliser une instruction 'else' au lieu d'une autre' if' car vos chemins de code * devraient * s'exclure mutuellement. Aussi, pouvez-vous inclure quelques exemples de '$ cat 'et' $ cT'? –
Montre moi 'print_r ($ convertTitle);'. Savez-vous que vous pouvez utiliser 'if (...) {...} else {...}'? – mleko
J'ai essayé ça et ça n'a toujours pas fonctionné. – SanguineEpitaph