Hướng dẫn why is my variable undefined php? - tại sao biến của tôi là php không xác định?

Tôi là một người mới PHP, vì vậy tôi có một chức năng vấn đề nhỏ. Tôi có dòng mã này:

\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
        echo "Nepravilan unos imena ili prezimina!";
        echo $pera;
        }
}
provera($ime);
provera($prezime);
?>

Dù sao, khi tôi thử mã này, tôi luôn nhận được một thông báo lỗi nói rằng có lỗi trên dòng 11 (phần in đậm của mã) và không có biến nào được lặp lại. Tôi đoán rằng nó cho tôi lỗi đó vì biến của tôi không được xác định bên trong chức năng đó, nhưng tôi cần xác định nó bên ngoài chức năng nên có cách nào để làm điều này không?

Khi được hỏi ngày 19 tháng 5 năm 2011 lúc 12:44May 19, 2011 at 12:44

Hướng dẫn why is my variable undefined php? - tại sao biến của tôi là php không xác định?

MentalheadalheadMentalhead

1.4615 huy hiệu vàng19 Huy hiệu bạc26 Huy hiệu đồng5 gold badges19 silver badges26 bronze badges

3

Điều này là do bạn đang sử dụng biến $pera (chỉ tồn tại trong phạm vi toàn cầu) bên trong một hàm.

Xem trang hướng dẫn sử dụng Php trên phạm vi biến để biết thêm thông tin.

Bạn có thể khắc phục điều này bằng cách thêm global $pera; trong chức năng của mình, mặc dù đây không phải là một cách tiếp cận đặc biệt thanh lịch, vì các biến toàn cầu bị xa lánh vì những lý do quá chi tiết để đi vào đây. Như vậy, sẽ tốt hơn nếu chấp nhận $pera như một đối số cho chức năng của bạn như sau:

function provera($prom, $pera){
    if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
        echo "Nepravilan unos imena ili prezimina!";
        echo $pera;
        }
}

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 12:48May 19, 2011 at 12:48

Hướng dẫn why is my variable undefined php? - tại sao biến của tôi là php không xác định?

John Parkerjohn ParkerJohn Parker

53.7K11 Huy hiệu vàng128 Huy hiệu bạc128 Huy hiệu đồng11 gold badges128 silver badges128 bronze badges

3

Nếu phiên bản PHP của bạn trên các phiên bản 5,3 trở lên, việc đóng có thể được áp dụng.

Closures may also inherit variables from the parent scope.

function provera($prom, $pera){
    if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
        echo "Nepravilan unos imena ili prezimina!";
        echo $pera;
        }
}
0 là cú pháp PHP để thực hiện đóng cửa.

Tham khảo: Các chức năng ẩn danh

    \.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
            echo "Nepravilan unos imena ili prezimina!";
            echo $pera;
        }
    };

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

Đã trả lời ngày 29 tháng 4 năm 2019 lúc 10:02Apr 29, 2019 at 10:02

Hướng dẫn why is my variable undefined php? - tại sao biến của tôi là php không xác định?

Trong chức năng của bạn Provera ($ prom) Thêm một dòng cho biết

global $pera;

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 12:50May 19, 2011 at 12:50

Hướng dẫn why is my variable undefined php? - tại sao biến của tôi là php không xác định?

AllisonCallisoncAllisonC

2.9034 Huy hiệu vàng28 Huy hiệu bạc45 Huy hiệu đồng4 gold badges28 silver badges45 bronze badges

Có vẻ như bạn không có gì được đặt trong biến $ pera của bạn. Nếu bạn phải xác định một biến bên ngoài một hàm, hãy thử truyền giá trị của nó làm đối số cho chức năng của bạn.

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


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

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 12:47May 19, 2011 at 12:47

lvictorinolvictorinolvictorino

5533 Huy hiệu bạc18 Huy hiệu Đồng3 silver badges18 bronze badges

Bạn không thể sử dụng $pera bên trong phương thức như vậy vì nó không được xác định bên trong phạm vi phương thức.

Nếu bạn muốn sử dụng phương thức, hãy truyền nó làm tham số.

function provera($prom, $pera){ //passed as a param
    if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-    \_\=\+\`[:space:]]/",$prom)){
        echo "Nepravilan unos imena ili prezimina!";
    echo $pera;
}

Đã trả lời ngày 19 tháng 5 năm 2011 lúc 12:48May 19, 2011 at 12:48

John Parkerjohn ParkerJohnP

53.7K11 Huy hiệu vàng128 Huy hiệu bạc128 Huy hiệu đồng13 gold badges108 silver badges138 bronze badges

2

Làm cách nào để sửa các biến không xác định trong PHP?

Khắc phục thông báo: Biến không xác định bằng cách sử dụng hàm isset () Thông báo này xảy ra khi bạn sử dụng bất kỳ biến nào trong mã PHP của mình, không được đặt. Giải pháp: Để khắc phục loại lỗi này, bạn có thể xác định biến là toàn cầu và sử dụng hàm isset () để kiểm tra xem biến có được đặt hay không.define the variable as global and use the isset() function to check if the variable is set or not.

Tại sao nó nói biến của tôi là không xác định?

Một biến chưa được gán một giá trị là loại không xác định. Một phương thức hoặc câu lệnh cũng trả về không xác định nếu biến đang được đánh giá không có giá trị được gán. Một hàm trả về không xác định nếu một giá trị không được trả về. is of type undefined . A method or statement also returns undefined if the variable that is being evaluated does not have an assigned value. A function returns undefined if a value was not returned .

Lỗi không xác định trong PHP là gì?

Lỗi này có nghĩa là trong mã của bạn, có một biến hoặc không đổi không có giá trị được gán cho nó.Nhưng bạn có thể đang cố gắng sử dụng các giá trị thu được thông qua biểu mẫu người dùng trong mã PHP của bạn.Có thể tránh lỗi bằng cách sử dụng hàm isset ().within your code, there is a variable or constant that has no value assigned to it. But you may be trying to use the values obtained through the user form in your PHP code. The error can be avoided by using the isset() function.

Làm thế nào kiểm tra biến được xác định trong PHP?

$ istouch = isset ($ biến);Nó sẽ trả về true nếu biến $ được xác định.Nếu biến không được xác định, nó sẽ trả về sai.Lưu ý: Nó trả về true nếu biến tồn tại và có một giá trị khác với null, sai nếu không. It will return true if the $variable is defined. If the variable is not defined it will return false . Note: It returns TRUE if the variable exists and has a value other than NULL, FALSE otherwise.