同时回应两个键

时间:2016-05-11 23:00:46

标签: php

我知道标题可能有点混乱,所以我在这里解释一下。

这是我的代码:

<?php

  ini_set('display_errors', 'On');

  $db = new PDO('mysql:host=127.0.0.1;dbname=phppdo', 'root', '');

  $users = $db->query("SELECT * FROM pdophp");

  $table = $users->fetchAll(PDO::FETCH_ASSOC);

?>

<!doctype html>
<html lang="en">
  <head>
      <meta charset="utf-8">
      <title>Fetching</title>
  </head>
  <body>
    <?php foreach ($table as $tabledata) { ?>
        <ul>
          <li><?php echo $tabledata['id']; ?></li>
          <li><?php echo $tabledata['email']; ?></li>
          <li><?php echo $tabledata['first_name'] . ' ' . $tabledata['last_name']; ?></li>
        </ul>
      <?php } ?>
  </body>
</html

基本上我尝试做的是同时回显first_name和last_name键。有没有办法比后续更有效地做到这一点?

echo $tabledata['first_name'] . ' ' . $tabledata['last_name'];

我只是发现这行代码非常笨拙,我想以更好的方式做到这一点。

提前致谢。

4 个答案:

答案 0 :(得分:1)

效率是一种可能的指标,但您还需要考虑可读性和可维护性。

对于大型项目,我会考虑模板引擎,但除此之外你可以使用here-document:

{{1}}

答案 1 :(得分:1)

也许你可以使用sql的CONCAT功能:

$users = $db->query("SELECT *,CONCAT(first_name, ' ', last_name) as all_name FROM pdophp");

然后在视图上

<li><?=$tabledata['all_name']?></li>

我希望它可以帮到你。

答案 2 :(得分:0)

没有。那没有。如果你想要一个echo,你可以先将所有字符串连接成一个变量,但你的语法不会更漂亮。

如果您希望模板看起来更好(并且它还有许多其他好处),请查看Twig模板引擎之类的内容。

无论哪种方式,您都应该考虑将逻辑和表示分开,例如使用MVC框架。无论你在建造什么;在某些时候,你的方法可能会成为一个难以维持的混乱。

答案 3 :(得分:0)

我使用heredoc进行操作,因此我不需要使用concatenationquotes和几个php块,即:< / p>

<!doctype html>
<html lang="en">
  <head>
      <meta charset="utf-8">
      <title>Fetching</title>
  </head>
  <body>
<?php foreach ($table as $tabledata) {
echo <<< LOL
    <ul>
      <li>{$tabledata['id']}</li>
      <li>{$tabledata['email']}</li>
      <li>{$tabledata['first_name']} {$tabledata['last_name']}</li>
    </ul>
LOL;
}
?>
    </body>
</html>