Hướng dẫn undefined variable php function - hàm php biến 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 undefined variable php function - hàm php biến 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 undefined variable php function - hàm php biến không xác định

John Parkerjohn ParkerJohn Parker

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

2

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 undefined variable php function - hàm php biến 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 undefined variable php function - hàm php biến không xác định

AllisonCallisoncAllisonC

2.9054 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ạc129 Huy hiệu đồng13 gold badges109 silver badges139 bronze badges

2