【问题标题】:How to print an entire PHP array in a single HTML cell?如何在单个 HTML 单元格中打印整个 PHP 数组?
【发布时间】:2021-11-16 17:50:19
【问题描述】:

我有一个 HTML 表格,其中有一些列。每列都显示了自己的价值。但是在表格的一个单元格中,我想显示用逗号分隔的整个项目名称数组。我希望表格单元格显示如下:

User ID Item Name
1 name1, name2, name3,....

$allitemnames 保存数组值,如 name1、name2、name3 等

这是我当前获取项目数组的代码:


$itemnames="SELECT item_name FROM orderhistory WHERE uid='$userid' AND payment_mode = 'Cash'";
$itemnamescon=$con->query($itemnames);
$allitemnames=array();
while($x = mysqli_fetch_assoc($itemnamescon))
{
     $allitemnames[]=array('item_name'=> $x['item_name']);
}
$itemsarrayresult = implode(", ", $allitemnames);

它正确地获取了数组,因为当我尝试在 HTML 表之外回显 $allitemnames 时,它会打印整个数组。但是当我尝试在 HTML 表格单元格中打印它时出现了主要问题。我使用以下代码打印它:

echo"<tr style='color:white; background-color:#262626'>
<td><center>".$userid."</center></td>
<td><center>".$itemsarrayresult."</center></td>
</tr>";

此代码确实在单个单元格中打印多个名称,但输出根本不是我想要的。它只打印 "Array, Array, Array...."

首先它多次显示此警告消息并显示-

警告:第 62 行 C:\xampp\htdocs\Project\pendingpayments.php 中的数组到字符串转换

其次,表格如下所示:

User ID Item Name
1 Array, Array, Array,....

我在网上看过,但我遇到的每个论坛都有人试图循环并打印每 td 1 个值,而不是一个 td 中的所有值p>

【问题讨论】:

  • 替换 $allitemnames[]=array('item_name'=> $x['item_name']); by $allitemnames[]=$x['item_name'];
  • 您尝试过什么解决问题的方法?你被困在哪里了? $allitemnames 在我看来不像是字符串数组
  • $allitemnames 末尾包含[] 会自动将右侧表达式的结果推送到$allitemnames 数组的末尾。为什么选择将右侧表达式的结果包装在array() 中,从而创建一个单项数组,然后将其推入更大的$allitemnames 数组?这似乎与您在这里的意图不同。

标签: php html arrays


【解决方案1】:

你能改变你的代码如下并重试吗?

$itemsarrayresult = ''; //initialization
while($x = mysqli_fetch_assoc($itemnamescon))
{
     $itemsarrayresult .= $x['item_name'].","; //concatenation
}
//now you need to display but variable will have an addirional ',' at the end so we will trim it using rtrim
echo '<tr style="color:white; background-color:#262626">
    <td><center>'.$userid.'</center></td>
    <td><center>'.rtrim($itemsarrayresult,',').'</center></td>
   </tr>';

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
【解决方案2】:

对此有几种不同的方法:

在php中:

while($x = mysqli_fetch_assoc($itemnamescon))
{
     $allitemnames[]=$x['item_name'];
}
$itemsarrayresult = implode(", ", $allitemnames);

在 MySQL 中:

SELECT GROUP_CONCAT(item_name) FROM orderhistory WHERE uid='$userid' AND payment_mode = 'Cash'"

【讨论】:

    【解决方案3】:

    有一个多维数组。你不需要她。 这样做:

    $allitemnames[] = $x['item_name'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2014-05-14
      • 2021-12-07
      • 2019-06-08
      • 2018-11-21
      相关资源
      最近更新 更多