Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1444 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  array_filter pour les champs vides, mais pas "0"

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

array_filter pour les champs vides, mais pas "0"

n°2339688
Furaxx
Posté le 30-09-2019 à 16:44:41  profilanswer
 

Bonjour,
 
J'envoie un tableau à une méthode pour enregistrement des données qu'il contient.
 
Avant de l'enregistrer je supprime dans celui-ci toutes les données vides avec un array_filter().
Seul problème, j'ai un champs caché qui contient soit 1, soit 0. Et du coup dans le cas où il vaut 0 le array_filter() le supprime du tableau.
 
J'ai testé avec un array_filter avec une fonction pour retourner ce qu'il faut mais je ne dois pas faire ce qu'il faut car ça ne fonctionne pas...
Bref, je suis preneur d'un array_filter() permettant de garder les champs égaux à '0'.
 
J'ai testé ça pour le moment mais sans succès:
 

Code :
  1. $data = array_filter($data, function ($k) {
  2.             return (!empty($k) || (int)$k === 0);
  3.         });


 
Merci! :)

mood
Publicité
Posté le 30-09-2019 à 16:44:41  profilanswer
 

n°2339689
Furaxx
Posté le 30-09-2019 à 16:52:00  profilanswer
 

J'ai continué mes recherches et ceci à l'air de fonctionner:
 

Code :
  1. $data = array_filter($data, function ($k) {
  2.             return (!empty($k) || $k === 0 || $k === '0');
  3.         });


 
Mais il existe peut-être quelque chose de mieux/plus propre?

n°2339709
pluj
Posté le 30-09-2019 à 19:10:52  profilanswer
 

Salut,
 
quelle est ta définition de valeurs vides ?
 
Parce que, peut être que :

Code :
  1. $data = array_filter($data, function ($k) {
  2.     return '' !== $k;
  3. });


Te suffirait ?
 
Sachant que pour PHP, '0' est une valeur fausse (et vide par extension).
 
Si tu traites des donnés POST (ou GET voire autre), les données seront obligatoirement des chaînes de caractères ou des tableaux (ie $k === 0 ne sera jamais vrai).


Message édité par pluj le 30-09-2019 à 19:14:26
n°2339717
Furaxx
Posté le 01-10-2019 à 08:54:59  profilanswer
 

MA définition de vide est… vide et pas "0" quoi. :)
 
Et donc ta solution fonctionne nickel, comme la mienne d'ailleurs, mais est plus propre.
 
Merci!

n°2339726
B4X
kebab-case
Posté le 01-10-2019 à 10:14:36  profilanswer
 

Furaxx a écrit :

Mais il existe peut-être quelque chose de mieux/plus propre?


 

Code :
  1. array_filter($array, 'strlen');


[:b4x]  
 
 

Code :
  1. $array = [
  2.     'key1' => 'chaine de caracteres',
  3.     'key2' => '0',
  4.     'key3' => 0,
  5.     'key4' => null,
  6.     'key5' => '',
  7. ];
  8.  
  9. var_dump(array_filter($array, 'strlen'));


Code :
  1. array(3) {
  2.   ["key1"]=>
  3.   string(20) "chaine de caracteres"
  4.   ["key2"]=>
  5.   string(1) "0"
  6.   ["key3"]=>
  7.   int(0)
  8. }


---------------
In vanitas veritas.
n°2339741
Furaxx
Posté le 01-10-2019 à 12:02:42  profilanswer
 

Merci beaucoup! ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  array_filter pour les champs vides, mais pas "0"

 

Sujets relatifs
[MySQL] Extraction de champs Json[MySQL] Champs Json, ordre non gardé
Résolu - Extraire des array d'un array multidimentionnelProblème de map sur un array
PowerShell : Compléter champs web[SQLSERVER] Trim aléatoire (??) sur les champs char
Suppression des lignes vides avec un grand SSystème de log de champs de BD mis à jour
SQL Créer une vue avec Nom Champs et Valeur dans des enregistrementsinjection donnée xls à partir d'une colone précise ?
Plus de sujets relatifs à : array_filter pour les champs vides, mais pas "0"


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR