Неопределенная переменная с функцией PHP

Я новичок в PHP, поэтому у меня есть небольшие проблемы. У меня есть эта строка кода:

<?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); ?> 

Во всяком случае, когда я пытаюсь выполнить этот код, я всегда получаю сообщение об ошибке, сообщающее о наличии ошибки в строке 11 (полужирная часть кода), и никакая переменная не отражается. Я предполагаю, что это дает мне эту ошибку, потому что моя переменная не определена внутри этой функции, но мне нужно определить ее вне функции, так есть ли способ сделать это?

Это связано с тем, что вы используете переменную $pera (которая существует только в глобальной области) внутри функции.

Дополнительную информацию см. На странице руководства PHP в области переменных .

Вы можете исправить это, добавив global $pera; в рамках вашей функции, хотя это не особенно элегантный подход, поскольку глобальные переменные избегаются по причинам, слишком детализированным для перехода сюда. Таким образом, было бы лучше принять $pera как аргумент вашей функции следующим образом:

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

Похоже, у вас ничего не установлено в переменной $ pera. Если вам нужно определить переменную вне функции, попробуйте передать ее значение в качестве аргумента вашей функции.

 function echoMyVar( $myVar ) { echo $myVar; } $p = "toto"; echoMyVar($p); 

Вы не можете использовать $pera внутри метода, так как он не определен внутри области метода.

Если вы хотите использовать метод, передайте его как параметр.

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

В вашей функции function provera ($ prom) добавьте строку, которая гласит:

 global $pera;