Я новичок в 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;