7
votes

Problème de variable non défini avec la fonction PHP

Je suis un débutant PHP, alors j'ai une fonction de problèmes mineurs. J'ai cette ligne de code:

<?php
$ime=$_POST["ime"];
$prezime=$_POST["prezime"];
$pera="string";
if (empty($ime)||empty($prezime)){
    echo "Ne radi, vrati se nazad i unesi nesto!";
}
function provera($prom){
    if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
        echo "Nepravilan unos imena ili prezimina!";
        echo $pera;
        }
}
provera($ime);
provera($prezime);
?>


3 commentaires

Pouvez-vous dépasser toute la fonction "provera"


Utilisez des fonctions de formatage afin que nous puissions voir votre code sans problème, cela facilite l'aide.


Incidemment, vous bénéficierez probablement de travailler via le Tutoriel de Manuel PHP section, Comme il couvre beaucoup de ces types de problèmes.


5 Réponses :


2
votes

On dirait que vous n'avez rien dans votre variable de $ Pera. Si vous devez définir une variable à l'extérieur d'une fonction, essayez de transmettre sa valeur comme argument sur votre fonction.

function echoMyVar( $myVar )
{
   echo $myVar;
}


$p = "toto";
echoMyVar($p);


0 commentaires

2
votes

Vous ne pouvez pas utiliser $ PERA à l'intérieur de la méthode comme celle-là car elle n'est pas définie à l'intérieur de la portée de la méthode.

Si vous souhaitez utiliser la méthode, transmettez-la sous forme de paramètre. xxx


2 commentaires

Essayé auparavant, et je suis trois erreurs maintenant 2x argument manquant 2 pour Provera () sur la ligne 14 et la variable non définie: PERA sur la ligne 11


@Mentialhead - Comme Middaparka a déjà signalé, vous devez appeler la fonction avec 2 paramètres Provera ($ IME, $ PERA)



16
votes

Ceci est parce que vous utilisez la variable $ pera (qui n'existe que dans la portée globale) à l'intérieur d'une fonction.

Voir le page manuelle PHP sur la portée variable pour plus d'informations.

Vous pouvez résoudre ce problème en ajoutant < CODE> GLOBAL $ PERA; Dans votre fonction, bien que ce n'était pas une approche particulièrement élégante, car les variables globales sont expulsées pour des raisons trop détaillées pour aller ici. En tant que tel, il serait préférable d'accepter $ Pera comme argument à votre fonction comme suit: xxx


3 commentaires

J'ai essayé d'utiliser $ Pera comme un argument de la fonction, mais je reçois maintenant des erreurs que mon deuxième argument de Provera () est manquant et que $ Pera n'est pas identifié.


@Mentialhead - Mes excuses - Lorsque vous appelez la fonction, vous devez fournir la variable en tant que paramètre. I.e.: Provera ($ IME, $ PERA); et PROVERA ($ PREZIME, $ PERA); . J'espère que cela t'aides.


Merci beaucoup de clarifier cela.



3
votes

dans votre fonction fonction Provera ($ PROM) Ajouter une ligne qui dit

global $pera;


0 commentaires

5
votes

Si votre version PHP est sur des versions 5.3 ou ultérieures, la fermeture peut être appliquée.

Les fermetures peuvent également hériter de variables de la portée parente. code> p>

Code> est la syntaxe PHP pour mettre en œuvre la fermeture. P>

ref: Fonctions anonymes P>

    <?php
    // $ime=$_POST["ime"];
    // $prezime=$_POST["prezime"];
    $pera="string";
    $prezime = "Ne radi, vrati se nazad i unesi nesto!";
    // if (empty($ime)||empty($prezime)){
    //     echo "Ne radi, vrati se nazad i unesi nesto!";
    // }
    $provera = function ($prom) use ($pera) {
        if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
            echo "Nepravilan unos imena ili prezimina!";
            echo $pera;
        }
    };

    // $provera($ime);
    $provera($prezime);


0 commentaires