Php 将多个数组合并为一个具有唯一值的数组

Php 将多个数组合并为一个具有唯一值的数组,php,mysql,Php,Mysql,我知道在堆栈溢出上有很多类似的线程,但在我的例子中没有一个是有效的 我的目标是从数据库中获取独特的节目类型。它们存储在“显示类型”列中,以逗号分隔(1、2、3或更多) $link = mysqli_connect('127.0.0.1', 'root', 'pw', 'db'); $query = "SELECT show_genres FROM tv_shows"; $result = mysqli_query($link, $query); foreach ($result as $valu

我知道在堆栈溢出上有很多类似的线程,但在我的例子中没有一个是有效的

我的目标是从数据库中获取独特的节目类型。它们存储在“显示类型”列中,以逗号分隔(1、2、3或更多)

$link = mysqli_connect('127.0.0.1', 'root', 'pw', 'db');
$query = "SELECT show_genres FROM tv_shows";
$result = mysqli_query($link, $query);
foreach ($result as $value) {
$sh_genres = $value['show_genres'];
$sh_genres_array = array_map('trim', explode(',',$sh_genres));

// $doesnt_work = call_user_func_array("array_merge", 
$sh_genres_array); // doesn't work for me


echo '<pre>' . var_export($sh_genres_array, true) . '</pre>';
}
但是,我只需要一个包含唯一值的数组,例如:

$newArray  = array();

foreach ($result as $value) {

  $sh_genres = $value['show_genres'];
  $sh_genres_array = array_map('trim', explode(',',$sh_genres));

  $newArray = array_merge($newArray , $sh_genres_array );    

}

$newUniqueArray = array_unique($newArray);
如果我尝试在foreach循环之前创建一些数组,然后将数据存储到其中,这种方法也不会给出结果

也许,有一个更简单的解决方案是通过SQL

请尝试此代码

 $genre_arr = RecursiveIteratorIterator(new RecursiveArrayIterator($sh_genres_array));

 $unique_genre = array_unique($genre_arr);
SQL中的

$query=“按节目类型从电视节目组中选择节目类型”

PHP中的

    $link = mysqli_connect('127.0.0.1', 'root', 'pw', 'db');
    $query = "SELECT show_genres FROM tv_shows";
    $result = mysqli_query($link, $query);
    $sh_genres_array = [];
    foreach ($result as $value) {
    $sh_genres = $value['show_genres'];
    $sh_genres_array = array_merge(
        $sh_genres_array ,
        array_map('trim', explode(',',$sh_genres))
    );
}
echo '<pre>' . var_export(array_unique($sh_genres_array), true) . '</pre>';
尝试使用此代码

 $genre_arr = RecursiveIteratorIterator(new RecursiveArrayIterator($sh_genres_array));

 $unique_genre = array_unique($genre_arr);
$link=mysqli_connect('127.0.0.1','root','pw','db');
$query=“从电视节目中选择节目类型”;
$result=mysqli\u查询($link,$query);
$sh_genres_array=[];
foreach(结果为$value){
$sh_流派=$value['show_流派];
$sh\u genres\u array=array\u merge(
$sh_流派_阵列,
数组映射('trim',explode(',',$sh_类型))
);
}
回显“”。var_导出(数组唯一($sh_流派数组),true)。“”;
更新

请考虑规范数据库

< p>不确定,但试试这个。


我可能会尝试这样做,但是我的数组是未命名的。我理解这个想法,但是在这种情况下,我必须创建一些额外的foreach循环来以某种方式标记我的数组。但我不知道如何实现它。这正是我努力实现目标的方式,但我偶然发现了两个问题:1)当我尝试var_dump$newArray时,我无法得到结果2)$newUniqueArray只提供了大约26种风格,这是不可能的。)您想从数据库中获取show_流派的所有唯一值吗?您应该规范化您的数据库。那么现在的问题是一个简单的数据库查询。你能建议我如何规范它吗?这只是一个简单的例子。谢谢当然,在这种情况下,它应该是一个最简单的查询:-)添加一个带有
genres
的表和另一个链接
tv\u shows
到genres的表。
 $genre_arr = RecursiveIteratorIterator(new RecursiveArrayIterator($sh_genres_array));

 $unique_genre = array_unique($genre_arr);