в функции невидны параметры, которые ей передаются
У меня такая проблема. Есть функция, которая генерирует часть таблицы. Она объявлена с 5-ю параметрами в отдельном файле "generitem.php":
<?php
function generHTML($rank, $image, $title, $description, $rating){
?>
<tr>
<div class="row">
<td class="search_table_position col-md-1"> <? $rank ?></td>
<td class="search_table_img col-md-2"> <img src="<? $image ?>" alt=""> </td>
<td class="search_table_title col-md-8">
<h3 class="name"><? $title ?></h3>
<p><? $description ?></p>
</td>
<td class="search_table_rating col-md-1"><? $rating ?></td>
</div>
</tr>
<?php
}
?>
Это вроде бы работает, создаются таблицы, но с пустыми данными переменных. То есть насколько я понял, шаблон таблицы видит их "пустыми",как будто они не определены в данном контексте. Код вызова функции в файле "index.php":
if (isset($_POST['searchStr'])) {
$searchStr = $_POST['searchStr'];
$arr = getArray($searchStr);
echo "<pre>";
print_r($arr);
$arrayFilms = $arr["results"];
foreach ($arrayFilms as $key => $film) {
generHTML($film["resultType"], $film["image"], $film["title"], $film["description"], 10);
}
//require('components/item.php');
}
Сам массив $arr не пустой, в нем определены все те данные, с которыми я вызываю эту функцию.
Подключаю файл с функцией через include "generitem.php" в файле "index.php";
Я очень плохо знаю php,поэтому прошу в помощи в объяснении, что же я делаю не так. Спасибо
Ответы (1 шт):
Функция должна либо что-то вернуть и тогда в foreach надо делать echo, либо сразу в функции делать echo.
О том, как вы всё делаете (генерацию html и его связь с текущим кодом и пр.) я не буду расписывать - это дело ваше, да и не текущего вопроса в целом. Но в текущей проблеме надо делать так:
function generHTML($rank, $image, $title, $description, $rating){
$html = <<<HTML
<tr>
<div class="row">
<td class="search_table_position col-md-1">$rank</td>
<td class="search_table_img col-md-2"> <img src="$image" alt=""> </td>
<td class="search_table_title col-md-8">
<h3 class="name">$title</h3>
<p>$description</p>
</td>
<td class="search_table_rating col-md-1">$rating</td>
</div>
</tr>
HTML;
return $html;
}
//...
//...
//...
foreach ($arrayFilms as $key => $film) {
echo generHTML($film["resultType"], $film["image"], $film["title"], $film["description"], 10);
}
Надеюсь функция вызывается внутри тега tbody?