Is_string -> Tableau

Mammouth du PHP | 985 Messages

07 mars 2010, 19:53

Vue que les valeurs des posts des formulaires ne sont pas obligatoirement de type String.
Je cherchais une fonction qui permettait de tester facilement et simplement tous les éléments d'un tableau.
N'ayant pas trouvé ce que je cherchais, je propose cette fonction si cela peut aussi intéresser d'autres personnes.
// Vérifier si toutes les valeurs d'un tableau sont de type String
function no_string($table) {
    foreach($table as $index => $valeur) {
        if (!is_string($valeur)) return true;
    }
    return false;
}

// Exemple avec $_POST (mais peut être utilisé avec d"autres tableaux du même type)
if (!empty($_POST) && !no_string($_POST)) {
    // traiter le formulaire
}
Évidemment s'il existe un moyen encore plus simple et pas moins performant, je suis preneur.
Modifié en dernier par Dr@ke le 09 mars 2010, 21:35, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

08 mars 2010, 00:52

hello, tu pourrais faire avec array_map ou array_filter

avec array_map tester si une valeur est a "false" (le plus simple)
in_array(false, array_map('is_string', $_POST));
sinon on pourrais avec array_filter
count($_POST) === count(array_filter($_POST, 'is_string'));

Mammouth du PHP | 985 Messages

08 mars 2010, 00:58

Pas bête le array_map() surtout...
J'avais regardé array_map() mais j'ai vite laissé tomber, je n'avais pas pensé a l'utiliser avec in_array().
Et je n'étais pas certain de son comportement avec une fonction qui retourne true ou false...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 453 Messages

08 mars 2010, 19:20

@dr@ke : Je fais juste un petit passage pour dire que normalement le break est de trop vu qu'il y a le return, non ?

@steakth : bien vu :)

en POO, je verrai bien pear::QuickForm . ^^
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
ViPHP | 5462 Messages

08 mars 2010, 22:29

en POO, je verrai bien pear::QuickForm . ^^
ca commence a dater maintenant c'est QuickForm2 mais encore en version alpha, je pencherai pour un Zend_Form (mais un peu chiant de prendre toute la lib juste pour ca...) :wink:

Mammouth du PHP | 985 Messages

09 mars 2010, 21:34

@dr@ke : Je fais juste un petit passage pour dire que normalement le break est de trop vu qu'il y a le return, non ?
Si, exact -> Edité
en POO, je verrai bien pear::QuickForm . ^^
J'avais dis encore plus simple et pas moins performant :langue:

(Puis cela peut fonctionner pour autre chose qu'un Form)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 985 Messages

11 mars 2010, 17:30

Autre avantage qui est logique oui mais qui apporte un plus que l'on ne pense pas forcément au départ:
Exemple:
$var = '';
var_dump(is_string($var));
// retourne false
Ainsi la fonction vérifie aussi si les valeurs du tableau sont vides.
(il faut juste s'assurer que le tableau existe bien)

Avant de traiter un formulaire, c'est top, enfin pour moi :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.