Как разделить электронное письмо на символ @ и отобразить в двух ячейках таблицы?

Я хочу отображать значения отдельно, которые я получил через 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>

1

Решение

echo "<tr>";
foreach ($hello as $value)
{
echo "<td>$value</td>";
}
echo "</tr>";

В основном вам нужно установить тег TR перед foreach.

Во вторых в foreach, $value содержит оба значения в итерациях, поэтому не нужно печатать $hello[0],

Просто распечатать $value

2

Другие решения

после взрыва есть два значения, которые перед @ и после @Вот почему вы печатаете свою ценность дважды

попробуй это

<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>
1

Ваш цикл отображает каждую часть вашего массива, из которой вы получаете explode(), В вашем цикле вы используете $hello, который является сам массив.

Вы должны повторить фактический $value как это:

 echo "<tr>";

foreach ($hello as $value) {
echo "<td>$value</td>";
}

echo "</tr>";
1

echo "<tr><td>";
foreach ($hello as $value)
{
echo "<td>" . $value . "</td>";
}
echo "</tr>";

Значение — это каждая часть массива.
Таким образом, каждый раз, когда идет цикл, значение $ изменяется.

РЕДАКТИРОВАТЬ; Похоже, вы хотите части электронной почты в разных столбцах.

0

Вам не нужен цикл, просто взорвать значения:

$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>';

Демо-ссылка

0
По вопросам рекламы [email protected]