【问题标题】:Turning comma separated data from MySql into a php array将逗号分隔的数据从 MySql 转换为 php 数组
【发布时间】:2014-10-06 15:22:30
【问题描述】:

除了像我现在做的那样,将逗号分隔的数据从 mysql 表转换为简单的 php 数组的直接方法是什么?

我目前以一种非常混乱的方式执行此操作,即选择数据,然后将其连接成一个字符串,我稍后会使用它。

我在这里使用 PDO。

数据很简单

locations
-------------------
US,UK,SE,DE
DE,SE,CA
GB,US,DE,SE
AU,NZ,GB

pdo

$d = $db->prepare('select locations a from destinations');

$d->execute();

$d->bindColumn('a',$a);

$count = $d->rowCount();

if($count >= 1) {
    $b = '';
    while($row = $d->fetch()) {
        $b .= $a.',';
    }
} else {
    $b = 'No records to display';
}

echo $b;

我希望实现的输出只是一个像下面这样的简单数组,它是将所有行连接在一起。

期望的输出

array('US','UK','SE','DE','DE','SE','CA','GB','US','DE','SE','AU','NZ','GB')

你能帮忙吗?

【问题讨论】:

  • 如何在此处更改您当前的代码:$b .= $a.','; 以输出一个没有您介绍的逗号的数组?如果您还需要原始输出,则将 DB 数据和原始数据一起写入附加数组。
  • @james 更改我当前的代码以输出数组??
  • 您要么想要一个数组,要么将所有行连接在一起。

标签: php


【解决方案1】:

你快到了。您可以做的最简单的事情是使用 explode(',', $b) 作为您现在拥有的完整字符串,坦率地说,我有点惊讶您在编写完所有代码后无法弄清楚那部分。

您也可以使用GROUP_CONCAT 函数在查询中连接它,而不是在 PHP 中连接所有内容。不过,这将引入一个限制,因为如果我没记错的话,GROUP_CONCAT 的结果最多可以是 32k。

以下是另一种方法。在这里,每一行都被立即提取并分解为一个数组。该数组与(实际上附加到)一个大的结果数组合并。

优点是你没有先连接一个大字符串,效率相对较低,但在实践中,我怀疑你是否能分辨出性能上的差异。

$d = $db->prepare('select locations a from destinations');

$d->execute();

// An array for results.
$results = array();

$d->bindColumn('a',$a);

$count = $d->rowCount();

if($count >= 1) {
    $b = '';
    while($row = $d->fetch()) {
        // explode each row and append it to the array.
        $results = array_merge($results, explode(',', $a));
    }
} else {
    $b = 'No records to display';
}

// Display the complete array.
print_r($results);

【讨论】:

    【解决方案2】:

    您可以只选择条目,然后通过像这样“分解”它们将它们变成数组:

    $locationArray = explode(",", $databaseEntry);
    

    这将用逗号分隔您的数据库条目并将每个条目添加到数组中。

    文档:http://php.net/manual/de/function.explode.php

    希望能帮到你

    【讨论】:

    • 后面的, 会不会造成问题?
    • 会在爆炸前推荐一个 rtrim
    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多