csv 从包含逗号分隔字符串的结果集中拆分、拼合和删除重复值

anauzrmj  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(170)

表示查询结果集相关部分的最小示例数组:

[
    ['keyw' => 'sam , ram,shyam'],
    ['keyw' => 'sam,ram,shyam, mohan'],
    ['keyw' => 'sam, ram, shyam ,mohan,salman,babu , karan'],
]

我想删除重复的名称,以获得如下输出

[
    sam,
    ram,
    shyam,
    mohan,
    salman,
    babu,
    karan
]

我如何才能做到这一点?

<?php
include 'config.php';
$db = new Database();
$db->select('post','*',null,null,'id',20);
$result = $db->getResult();
if (count($result) > 0) {
    foreach ($result as $row) { 
        $string = $row['keyw'];
        $string = $string;
        $array = explode(',', $string);
        print_r(array_merge($array)); 
    }
}
?>
dgsult0t

dgsult0t1#

您可以使用array_unique函数删除重复的数组值。例如$arrayWithUniqueValues = array_unique($OriginalArray);
因为这些看起来像是独立的数组,所以可以先使用array_merge合并这些数组,如下所示:array_merge($array1, $array2) .
新数组应该只包含唯一值。

ffx8fchx

ffx8fchx2#

<?php
include 'config.php';

$db = new Database();
$db->select('post','*',null,null,'id',20); $result = $db->getResult(); if(count($result) > 0){ 

$newArray  = array();
foreach ($result as $value) {
  $sh_genres = $value['keyw'];
  $sh_genres_array = array_map('trim', explode(',',$sh_genres));
  $newArray = array_merge($newArray , $sh_genres_array );    
}
$newUniqueArray = array_unique($newArray);

foreach($newUniqueArray as $links)  {
echo '<p>'.$links.'</p>';
 }}?>
f3temu5u

f3temu5u3#

您可以使用逗号分割数据行值,并使用preg_split()消耗逗号前后可能的前置和后置空格,然后在将数据推入结果数组时翻转值,以确保唯一性。然后,当您想要存取唯一值时,可以使用array_keys()将索引键转换为值。
代码:(Demo

$unique = [];
foreach ($db->getResult() as $row) {
    $unique += array_flip(preg_split(
        '/ *, */',
        $row['keyw'],
        0,
        PREG_SPLIT_NO_EMPTY
    ));
}
var_export(array_keys($unique));

相关问题