IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation de array_map()


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 602
    Points : 818
    Points
    818
    Par défaut Utilisation de array_map()
    J'ai toujours beaucoup de mal à comprendre et à utiliser array_map.
    Pour les champs input, je souhaite afficher dans l'attribut title la valeur du champ lorsqu'elle dépasse la longueur de ce champ.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function setTitle($key) {
    	$value = isset($_POST[$key]) ? $_POST[$key] : '';
    	return isset($value) && (grapheme_strlen($value) >5) ? " title = '$value'" : ''; // remplacer 5 par 34 après mise au point
    }
     
    $echo['titles']	= array_map('setTitle', $post);
    J'ai aussi essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $keys = array_keys($post);
    $echo['titles']	= array_map('setTitle', $keys);
    Dans tous les cas, $echo['titles'] ne contient que des chaînes vides.
    EDIT: Je veux que les clés de $echo['titles'] soient des clés associatives.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 438
    Points : 4 936
    Points
    4 936
    Par défaut
    Bonjour,

    Le $key que tu as mis en paramètre de la fonction setTitle n'est pas une clé, mais une valeur car tu n'as passé que les valeurs en paramètre dans array_map('setTitle',$keys) et pas les clés.

    Il fallait écrire :array_map('setTitle',array_keys($post),array_values($post)) et je ne crois pas que c'est array_map qu'il te faut.

    Pourquoi ne pas utiliser une simple boucle foreach ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function setTitle($p) {
       foreach($p as $key=>$value){	
            $value = isset($_POST[$key])? $_POST[$key] : '';
            $value=strlen($value) >5 ?" title = '$value'":$value;
            $p[$key]=$value;
        }
       return $p;
    }
    //initialisation manuelle des variables post....
    $_POST['plus que 5']='valeur plus 5....';
    $_POST['test']="..";
     
    $post=$_POST;
    $echo["titles"]=setTitle($post);
    var_dump($echo["titles"]);
    //Affichage :
    array(2) {
      ["plus que 5"]=>string(28) " title = 'valeur plus 5....'"
      ["test"]=>string(2) ".."
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 602
    Points : 818
    Points
    818
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    Pourquoi ne pas utiliser une simple boucle foreach ?
    C'est effectivement ce que j'ai fini par faire mais j'ai laissé ma question parce que je n'arrive pas à maîtriser array_map.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de la fonction array_map
    Par yann123456 dans le forum Langage
    Réponses: 2
    Dernier message: 15/12/2010, 23h59
  2. Comment utiliser strip_tag avec array_map()
    Par pierrot10 dans le forum Langage
    Réponses: 3
    Dernier message: 16/11/2010, 08h36
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo