表示查询结果集的相关部分的最小样本数组:
[
['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));
}
}
?>
您可以使用
array_unique
函数删除重复的数组值。
喜欢$arrayWithUniqueValues = array_unique($OriginalArray);
因为这些看起来像是单独的数组,所以您可以先使用 array_merge 合并它们,例如:
array_merge($array1, $array2)
。
新数组应该只包含唯一值。
<?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>';
}}?>
您可以用逗号分割列值,并使用
preg_split()
消耗逗号周围潜在的前导和尾随空格,然后在将数据推入结果数组时翻转值以确保唯一性。 然后,当您想要访问唯一值时,可以使用 array_keys()
将键转换为值。
代码:(演示)
$unique = [];
foreach ($db->getResult() as $row) {
$unique += array_flip(preg_split(
'/ *, */',
$row['keyw'],
0,
PREG_SPLIT_NO_EMPTY
));
}
var_export(array_keys($unique));
这就是您一直在寻找的吗?
$splitter = ',';
$array = [];
$result = implode($splitter, array_unique(explode($splitter, $array))));