【问题标题】:Sort all ids of a table separated by comma in an array对数组中以逗号分隔的表的所有 id 进行排序
【发布时间】:2019-06-05 08:15:20
【问题描述】:

我想在一个数组中显示以逗号分隔的表格的所有列的id

$select_client= "SELECT id FROM `table`";
$sql=$dbconn->prepare($select_client);
$sql->execute();
$wlvd=$sql->fetchAll(PDO::FETCH_OBJ);
foreach($wlvd as $rows);
if($sql->rowCount() > 0){
    foreach($wlvd as $rows){
        $id = $rows->id;
        $array_id= array($id);
        echo  $array_id;
    }
}

结果应该是这样的 1,2,3,4.....

其中 1,2,3,... 是平板电脑的 ID

【问题讨论】:

  • $id = $rows->id;$array_id= array($id);echo $array_id; 想要达到什么目的?为什么不干脆做echo $rows->id;order by id 会对 id 进行排序。
  • 一些合理的代码缩进是个好主意。它可以帮助我们阅读代码,更重要的是,它将帮助 您调试代码 Take a quick look at a coding standard 为您自己谋福利。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 小记 准备一个没有参数且只运行一次的查询没有多大意义。在这种情况下,一个简单的->query() 就足够了
  • 你可以做$select_client= "SELECT GROUP_CONCAT(id) ids FROM table";

标签: php arrays pdo


【解决方案1】:

如果您更改了获取数据的模式,您可以对结果使用简单的数组函数,而不必在循环中将其从对象转换为数组...

$select_client= "SELECT id FROM `table`";
$sql=$dbconn->prepare($select_client);
$sql->execute();
$wlvd=$sql->fetchAll(PDO::FETCH_COLUMN);    // Changed mode here 
echo implode(",", $wlvd);

虽然您可以在 PHP 7+ 中使用 array_column() 和对象。

【讨论】:

    【解决方案2】:

    您将 $rows->id; 添加到变量 $id 然后将其添加到数组并立即回显数组(这将是数组到字符串的转换)

    您可以在每次迭代时添加到 $array_id[]。之后使用带有逗号的implode 来获取您想要的字符串:

    foreach($wlvd as $rows){
        $array_id[] = $rows->id;
    }
    echo implode(',', $array_id);
    

    【讨论】:

    • 我们的答案几乎是一样的:D
    • 显然,还有更好的答案需要推广。
    • 合乎逻辑的结论是否决我的?
    • 不是我的反对票,但可能是因为你的答案应该是单行的吗?
    • 我的意思是implode(',', array_column($wlvd, 'id'));
    猜你喜欢
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多