【问题标题】:How to fetch multiple row value which contains multiple value separated by comma into a single array in php using pdo mysql如何使用pdo mysql在php中将包含多个用逗号分隔的值的多行值提取到单个数组中
【发布时间】:2019-01-07 05:24:30
【问题描述】:

我有一个数据库表名书籍。现在我需要从多个行值(列名位置)中获取值,其中包含用逗号分隔的多个值。现在我需要使用 pdo php 从多行中获取值到一个数组中。

<?php
require_once "includes\config.php";

$sql = 'SELECT * FROM books WHERE shelf_no=2';
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetchALl(PDO::FETCH_ASSOC);
$d = array();
foreach ($row as $value) {
$d[] = explode(",",$value['position']);
}

print_r($d);
?>

结果是

Array (
  [0] => Array (
    [0] => b1 
    [1] => b2 
  ) 
  [1] => Array ( 
    [0] => a2 
    [1] => a3
  )
)

但我需要一个数组中的所有值,如下所示:

Array ( [0] => b1 [1] => b2 [2] => a2 [3] => a3 )

【问题讨论】:

标签: php mysql pdo


【解决方案1】:

您正在分解它(创建一个新数组),然后将该数组添加到另一个数组中。

您可以遍历分解字符串中的每个值并添加它们:

<?php
require_once "includes\config.php";

$sql = 'SELECT * FROM books WHERE shelf_no=2';
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetchALl(PDO::FETCH_ASSOC);
$d = array();
foreach ($row as $value) {
    $temp = explode(",",$value['position']);
    foreach($temp as $pos){
        array_push($d, trim($pos));
    }   
}

print_r($d);
?>

如果有重复,它们会显示出来。

【讨论】:

  • 非常感谢。我得到了我需要的东西。 @Second2None
【解决方案2】:

你也可以替换你的

$d[] = explode(",",$value['position']);

array_merge($d, explode(',', $value['position']));

这将创建一个数组,而不是一组数组。有关array_merge 的更多信息,请访问 php.net。

许多 PHP 函数比用 PHP 编写的等效函数具有更高的性能。 IE。这可能比嵌套的foreach 循环更快。与往常一样,如果这对您很重要,请双向计时。

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 2017-02-05
    • 1970-01-01
    • 2013-01-14
    • 2016-10-13
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多