Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un array associatif est il composé de nombres

Entiers ou décimaux

    15 octobre 2018 à 17:00:17

    Bonjour tout le monde,

    Je sèche un peu j'ai un tableau associatif généré dynamiquement par une série de champs input

    j'obtiens un résultat de ce type là

    Array ( [5281] => 3 [5026] => 6 )

    Je voudrais vérifier que toutes les valeurs sont bien des nombres avant des ajouter dans ma base de données pour essayer de sécuriser mon script.

    J'ai checké un peu à gauche à droite mais je ne trouve pas vraiment de manière concluante d'y arriver.

    Ou alors est ce que je pars sur la mauvaise idée et qu'il y'a un meilleurs moyen de sécuriser le script?


    Merci d'avance pour votre aide 

    • Partager sur Facebook
    • Partager sur Twitter
      15 octobre 2018 à 17:06:23

      Bonjours a tu essaye avec un try catch ?

      try {
          $var = intval($var);
      } catch (Exception $e) {
          echo 'c'est pas un nombre';
      }
      • Partager sur Facebook
      • Partager sur Twitter
      Google est beau et gentils il vous donnera toujours tout si vous lui demandé gentiment comme ceci
        15 octobre 2018 à 17:06:42

        array_map + intval en callback si tu veux "sécuriser". Tout dépend ce que tu en fais après (en IN( ... ) pour une requête SQL ?)

        Filtrage ? array_filter + ctype_digit ou regexp.

        > Bonjour as-tu essayé avec un try catch ?

        Depuis quand intval lève une exception ?!?

        -
        Edité par julp 15 octobre 2018 à 17:08:43

        • Partager sur Facebook
        • Partager sur Twitter
          15 octobre 2018 à 17:21:21

          hello Julp,

          Quand je test la méthode (si je capte bien). 

            $test = array_map( 'intval', $arraynum );
            



          Ca fonctionne bien pour les entiers forcément mais ca supprime ce qu'il y'a après la virgule des nombres décimaux et ça transforme les lettres en 0.

          Ce que j'aimerais c'est pouvoir faire un test quelconque qui permette de dire si la valeur est un nombre (entier ou à virgule) et si c'est le cas envoyer dans la BDD

          Désolé si je m'exprime mal, comme tu l'auras remarqué je suis pas un grand expert 

          • Partager sur Facebook
          • Partager sur Twitter
            15 octobre 2018 à 17:30:19

            Tu utilises ce que tu veux en callback, je veux dire tu peux y mettre une fonction anonyme où tu fais ce que bon te semble.

            Si ce ne sont pas des entiers, tu as l'équivalent, floatval, pour les décimaux. (quoi qu'il faut faire gaffe, le séparateur décimal en PHP n'est pas , mais .).

            -
            Edité par julp 15 octobre 2018 à 17:32:00

            • Partager sur Facebook
            • Partager sur Twitter
              15 octobre 2018 à 17:39:30

              Merci, tu m'as bien dirigé :) j'avance !

              bonne journée 

              • Partager sur Facebook
              • Partager sur Twitter

              Un array associatif est il composé de nombres

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown