J'ai une fonction pour enlever les mots de moins de 2 caractères. La première version fonctionne:Pourquoi ma fonction ne fonctionne pas lorsque j'utilise le commutateur?
function delLess2($array, $less){
$english = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
return preg_grep('~\A[^'.$english.']{'.$less.',}\z~u', $array);
}
Utilisation de la fonction:
$words = array("ӯ","ӯро","ӯт","ғариб","афтода","даст", "ра");
delLess($words, 3);
// Output
Array
(
[1] => ӯро
[3] => ғариб
[4] => афтода
[5] => даст
)
Mais cette version mise à jour ne fonctionne pas:
function delLess(&$array, $less = 0, $lang = FALSE)
{
$english = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
$russian = "ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ";
define(ENGLISH, $english);
define(RUSSIAN, $russian);
switch ($lang)
{
case ENGLISH:
return preg_grep('~\A[^'.ENGLISH.']{'.$less.',}\z~u', $array);
break;
case RUSSIAN:
return preg_grep('~\A[^'.RUSSIAN.']{'.$less.',}\z~u', $array);
break;
default:
return false;
}
}
Où dans le code que j'ai une erreur? Comment peut-il être corrigé?
Avez-vous var_dumped 'lang' de $? + la valeur par défaut de '$ lang' ne devrait pas être un booléen mais votre langue par défaut –
Qu'attendez-vous pour passer comme $ lang? Pouvez-vous montrer un exemple de comment vous avez appelé ce code mis à jour. –
vérifier ma réponse – delboy1978uk