Я хочу отображать значения отдельно, которые я получил через explode()
, Но проблема в том, что моя таблица показывает мне два значения, которые абсолютно одинаковы. Я не знаю причину этого и тщательно искал в StackOverflow, но не смог найти мой ответ.
Код:
<!DOCTYPE html>
<html>
<head>
<title>PHP3</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<table class="table table-bordered">
<thead>
<tr>
<th>User Name</th>
<th>Domain Name</th>
</tr>
</thead>
<tbody>
<?php
$str = "[email protected]";
$hello = explode("@",$str);
foreach ($hello as $value)
{
echo "<tr>";
echo "<td>$hello[0]</td>";
echo "<td>$hello[1]</td>";
echo "</tr>";
}
?>
</tbody>
</table>
</div>
</body>
</html>
echo "<tr>";
foreach ($hello as $value)
{
echo "<td>$value</td>";
}
echo "</tr>";
В основном вам нужно установить тег TR перед foreach.
Во вторых в foreach
, $value
содержит оба значения в итерациях, поэтому не нужно печатать $hello[0]
,
Просто распечатать $value
после взрыва есть два значения, которые перед @
и после @
Вот почему вы печатаете свою ценность дважды
попробуй это
<table class="table table-bordered">
<thead>
<tr>
<th>User Name</th>
<th>Domain Name</th>
</tr>
</thead>
<tbody>
<?php
$str = "[email protected]";
$hello = explode("@",$str);
echo "<tr>";
echo "<td>$hello[0]</td>";
echo "<td>$hello[1]</td>";
echo "</tr>";
?>
</tbody>
</table>
Ваш цикл отображает каждую часть вашего массива, из которой вы получаете explode()
, В вашем цикле вы используете $hello
, который является сам массив.
Вы должны повторить фактический $value
как это:
echo "<tr>";
foreach ($hello as $value) {
echo "<td>$value</td>";
}
echo "</tr>";
echo "<tr><td>";
foreach ($hello as $value)
{
echo "<td>" . $value . "</td>";
}
echo "</tr>";
Значение — это каждая часть массива.
Таким образом, каждый раз, когда идет цикл, значение $ изменяется.
РЕДАКТИРОВАТЬ; Похоже, вы хотите части электронной почты в разных столбцах.
Вам не нужен цикл, просто взорвать значения:
$str = "[email protected]";
$hello = explode("@",$str);
echo '<tr><td>',implode('</td><td>',$hello),'</td></tr>';
или, что проще, замените знак @ на </td><td>
$str = "[email protected]";
echo '<tr><td>',str_replace('@','</td><td>',$str),'</td></tr>';