mysql将包含逗号分隔的多个值的多行值提取到单个数组中

vybvopom  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(306)

我有一个名为books的数据库表。现在我需要从多个行值(列名位置)中获取值,其中包含多个用逗号分隔的值。现在我需要使用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 )
2w2cym1i

2w2cym1i1#

您将分解它(创建一个新数组),然后将该数组添加到另一个数组中。
您可以遍历分解字符串中的每个值并将它们相加:

<?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);
?>

如果有重复,他们将显示虽然。

f4t66c6m

f4t66c6m2#

您也可以更换

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

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

这将生成一个数组而不是一个数组数组。有关数组合并的详细信息,请访问php.net。
许多php函数的性能都比用php编写的等价函数好。i、 e.这可能比嵌套的 foreach 循环。一如既往,如果这对你很重要,时间是双向的。

相关问题