【问题标题】:How to have control of printing every element of an array in PHP?如何控制在 PHP 中打印数组的每个元素?
【发布时间】:2013-04-10 16:16:42
【问题描述】:

我希望能够控制我在这个数组中打印的内容。到目前为止,这就是我所拥有的:

<?php
/* DB CONNECTION */
try {
  $pdo = new PDO('mysql:host=' . DB_HOST . '; dbname=' . DB_NAME . '', DB_USER, DB_PASSWORD);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $pdo->exec('SET NAMES "utf8"');
  $sql = 'SELECT nombre,categoria,descripcion FROM equipos ORDER BY nombre ASC';
  $result = $pdo->query($sql);
}
catch(PDOException $e) {
  echo $error = 'Error fetching jokes: ' . $e->getMessage();
  exit();
}

/*FETCH ARRAY */
$equipos = array();
while ($row = $result->fetch()) {
  $equipos[] = $row['nombre'];
  $equipos[] = $row['categoria'];
  $equipos[] = $row['descripcion'];
}
?>       
<?php
/* PRINT ARRAY */
foreach($equipos as $equipo): ?>
  <p><?php
  echo htmlspecialchars($equipo);
?></p>
<?php
endforeach; 
?>

我的结果是:

Value1
value2
Value3

etc.

我希望能够打印如下内容:

Value1, Value2, Value3
Value4, Value5, Value6

一定有更实用的方法。

【问题讨论】:

    标签: php database arrays


    【解决方案1】:

    很难说你想要什么,但我在黑暗中拍摄
    注意连接PDO的正确方式

    <?php
    
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    );
    $dsn = 'mysql:host=' . DB_HOST . '; dbname=' . DB_NAME . ';charset=utf8';
    $pdo = new PDO($dsn, DB_USER, DB_PASSWORD, $opt);
    
    $sql    = 'SELECT nombre,categoria,descripcion FROM equipos ORDER BY nombre ASC';
    $result = $pdo->query($sql);
    $data   = $result->fetchAll();
    ?>       
    

    现在在$data 变量中,您有一个包含所有行的数组,每行都包含一个带有选定字段的数组。因此,您可以通过字段名称控制它们:

    <?php foreach($data as $row): ?>
      <p>
        <?=htmlspecialchars($row['nombre'])?>,
        <?=htmlspecialchars($row['categoria'])?>,
        <?=htmlspecialchars($row['descripcion'])?>
      </p>
    <?php endforeach ?>
    

    【讨论】:

    • 我刚刚尝试了这个选项,但没有打印任何值,只有逗号。
    • 如果没有 htmlspecialchars 会怎样?
    【解决方案2】:

    不要使用foreach语句,而是使用

    for(var i = 0;i<(sizeof($equipos);i++)
    {
     echo htmlspecialchars($equipo[i]);
    }
    

    【讨论】:

    • .length 不是 php 函数或数组属性。这行不通。
    • 抱歉,sizeof 误判了
    猜你喜欢
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2020-05-09
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多