Encore un problème avec array_walk

Répondre
JuTs
le 19/09/2005 à 23:03
JuTs
Salut

Il y a quelques temps j'ai eu un problème avec la fonction array_walk

Ca recommence. J'ai la fonction

<?php
function array_walk_prepare_filterDataForm(&$item, $key) {
if($key == 'MAX_FILE_SIZE' || $key == 'submit' || $key == 'helpbox' || $item == '') {
$item = 'a_supprimer';
}
}
?>


que j'utilise avec array_walk. Le but est de supprimer les données du tableau pour lesquelle la clé vaut 'MAX_FILE_SIZE', 'submit', 'helpbox' ou dont la valeur est vide. Pour ces cas là la valeur est définie à 'a_supprimer'.

Le problème : pour la clé 0, même si la valeur n'est pas vide, elle est changée en 'a_supprimer'.

tableau initial

Array
(
[0] => 15
[1] => 13
[2] => 3
[3] => 2
[4] => 5
[5] => 6
[6] =>
[7] =>
[8] =>
[9] =>
[10] => 4
[11] => 8
[12] => 12
[13] => 86
[14] =>
[15] =>
[16] =>
[17] =>
[18] =>
[19] =>
)


après array_walk

Array
(
[0] => a_supprimer
[1] => 13
[2] => 3
[3] => 2
[4] => 5
[5] => 6
[6] => a_supprimer
[7] => a_supprimer
[8] => a_supprimer
[9] => a_supprimer
[10] => 4
[11] => 8
[12] => 12
[13] => 86
[14] => a_supprimer
[15] => a_supprimer
[16] => a_supprimer
[17] => a_supprimer
[18] => a_supprimer
[19] => a_supprimer
)


Qqn à une idée ?
JuTs
zebden
le 20/09/2005 à 09:28
zebden
Utilise le triple égale pour comparer, ca compare le type aussi.
zebdinou pour les intimes / Blog : http://www.zebden.fr
JuTs
le 20/09/2005 à 10:19
JuTs
J'ai déjà essayé, ça ne va pas.

d'ailleurs même si c'était le cas, je ne vois pas comment, pour [0] => 15
15 == '' peut retourner true
JuTs
zebden
le 20/09/2005 à 10:37
zebden
Je ne pense pas que cela vient de la valeur 15 mais + de la clé 0.

Alors vu les tests sur les clefs, je vois pas trop le pourquoi du comment ...
Mais bon regarde plutot dans cette direction. Et onc aussi le triple égale pour que pas la clef 0 soit assimilée à une clé vide .
zebdinou pour les intimes / Blog : http://www.zebden.fr
JuTs
le 20/09/2005 à 12:07
JuTs
Vraiment étrange.

En fait je ne suis pas vraiment obligé de supprimer les données vide.
Il suffit de ne pas les traiter. ça sera peut-être un peu plus rapide. Actuellement je parcours le tableau trois fois (recherche des indices à supprimer, suppression, traitement des données restantes) alors qu'en ne traitant que les donnée non vide je le ferait qu'une seule fois. Bon, ça ne changera certainement rien (mon tableau à toujours une taille de 20
JuTs
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours