“Notice: Undefined variable”, “Notice: Undefined index”, and “Notice: Undefined offset” using PHP

后端 未结 28 907
盖世英雄少女心
盖世英雄少女心 2021-01-24 14:18

I\'m running a PHP script and continue to receive errors like:

Notice: Undefined variable: my_variable_name in C:\\wamp\\www\\mypath\\index.php on line 10

相关标签:
28条回答
  • 2021-01-24 14:37

    I use all time own useful function exst() which automatically declare variables.

    Your code will be -

    $greeting = "Hello, ".exst($user_name, 'Visitor')." from ".exst($user_location);
    
    
    /** 
     * Function exst() - Checks if the variable has been set 
     * (copy/paste it in any place of your code)
     * 
     * If the variable is set and not empty returns the variable (no transformation)
     * If the variable is not set or empty, returns the $default value
     *
     * @param  mixed $var
     * @param  mixed $default
     * 
     * @return mixed 
     */
    
    function exst( & $var, $default = "")
    {
        $t = "";
        if ( !isset($var)  || !$var ) {
            if (isset($default) && $default != "") $t = $default;
        }
        else  {  
            $t = $var;
        }
        if (is_string($t)) $t = trim($t);
        return $t;
    }
    
    0 讨论(0)
  • 2021-01-24 14:39

    It means you are testing, evaluating, or printing a variable that you have not yet assigned anything to. It means you either have a typo, or you need to check that the variable was initialized to something first. Check your logic paths, it may be set in one path but not in another.

    0 讨论(0)
  • 2021-01-24 14:40

    One common cause of a variable not existing after an HTML form has been submitted is the form element is not contained within a <form> tag:

    Example: Element not contained within the <form>

    <form action="example.php" method="post">
        <p>
            <input type="text" name="name" />
            <input type="submit" value="Submit" />
        </p>
    </form>
    
    <select name="choice">
        <option value="choice1">choice 1</option>
        <option value="choice2">choice 2</option>
        <option value="choice3">choice 3</option>
        <option value="choice4">choice 4</option>
    </select>
    

    Example: Element now contained within the <form>

    <form action="example.php" method="post">
        <select name="choice">
            <option value="choice1">choice 1</option>
            <option value="choice2">choice 2</option>
            <option value="choice3">choice 3</option>
            <option value="choice4">choice 4</option>
        </select>
        <p>
            <input type="text" name="name" />
            <input type="submit" value="Submit" />
        </p>
    </form>
    
    0 讨论(0)
  • 2021-01-24 14:41

    In a very Simple Language.
    The mistake is you are using a variable $user_location which is not defined by you earlier and it doesn't have any value So I recommend you to please declare this variable before using it, For Example:


    $user_location = '';
    Or
    $user_location = 'Los Angles';
    This is a very common error you can face.So don't worry just declare the variable and Enjoy Coding.

    0 讨论(0)
  • 2021-01-24 14:42

    The best way for getting input string is:

    $value = filter_input(INPUT_POST, 'value');
    

    This one-liner is almost equivalent to:

    if (!isset($_POST['value'])) {
        $value = null;
    } elseif (is_array($_POST['value'])) {
        $value = false;
    } else {
        $value = $_POST['value'];
    }
    

    If you absolutely want string value, just like:

    $value = (string)filter_input(INPUT_POST, 'value');
    
    0 讨论(0)
  • 2021-01-24 14:42

    Those notices are because you don't have the used variable defined and my_index key was not present into $my_array variable.

    Those notices were triggered every time, because your code is not correct, but probably you didn't have the reporting of notices on.

    Solve the bugs:

    $my_variable_name = "Variable name"; // defining variable
    echo "My variable value is: " . $my_variable_name;
    
    if(isset($my_array["my_index"])){
        echo "My index value is: " . $my_array["my_index"]; // check if my_index is set 
    }
    

    Another way to get this out:

    ini_set("error_reporting", false)
    
    0 讨论(0)
提交回复
热议问题