Почему я получаю "Неопределенная переменная" в моей пользовательской функции PHP

Я работаю с PHP Simple Dom Parser. Фактически, я создал тест для каждого тега, который я хочу протестировать следующим образом:

if(count($html->find('section')) == 0){
echo '<p>Aucune balise sémantique section.</p>';
}
elseif(count($html->find('section')) >= 1){
echo '<p>Nombre de balises sémantiques section: <span>' . count($html->find('section')) . '</span></p>'; 
}

Я пытаюсь создать функцию, чтобы переписать весь мой код, чтобы получить меньше строк. Я попробовал это:

function ftest($balise,$balisetxt){
if(count($html->find('$balise')) == 0){
 echo '<p>Aucune $balisetxt.</p>';
}
elseif(count($html->find('$balise')) >= 1){
 echo '<p>Nombre de $balisetxt: <span>' . count($html->find('section')) . '</span></p>'; 
}
}

ftest('section', 'balise sémantique section');

Но я получил эти

Notice: Undefined variable: html in E:\xampp\htdocs\testmobile\index.php on line 69

Fatal error: Call to a member function find() on a non-object in E:\xampp\htdocs\testmobile\index.php on line 69

Он, как PHP, не может получить доступ к $html-> найти вещь из PHP Simple Dom Prser внутри функции. Как мне это сделать?

2 ответа

$html имеет области видимости внутри функции, либо передает ее в качестве аргумента, либо использует глобальное ключевое слово для получения области. Также $html->find('$balise') должен быть $html->find($balise).

<!--?php 
/**
 * find text, yada..
 * @uses $html
 * @param string $balise
 * @param string $balisetxt
 * @return string
 */
function ftest($balise,$balisetxt)
{
 global $html;

 $return = null;

 if(count($html--->find($balise)) == 0)
 {
 $return = '<p>Aucune '.htmlentities($balisetxt, ENT_QUOTES, "UTF-8").'.</p>';
 } else 

 if(count($html->find($balise)) >= 1)
 {
 $return = '<p>Nombre de '.htmlentities($balisetxt, ENT_QUOTES, "UTF-8").': <span>' . count($html->find('section')) . '</span></p>';
 }
 return $return;
}

ftest('section', 'balise sémantique section');
?>


Вы должны узнать больше о PHP и его областях: http://www.php.net/manual/fr/language.variables.scope.php (французский контент, как вы выглядите на французском)

В двух словах функция A не может получить доступ к переменной, не определенной в ней/не переданной через параметр

licensed under cc by-sa 3.0 with attribution.