如何使用php将子数组转换为数组而不重复数组值
我已经对上面的数组进行了修改,我想将该数组转换为下面提到的唯一数组,并且应该有任何重复的值如何使用php将子数组转换为数组而不重复数组值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我已经对上面的数组进行了修改,我想将该数组转换为下面提到的唯一数组,并且应该有任何重复的值 Array ( [0] => Array ( [id] => 21153 [genre] => ["History","Drama", "Thriller"] ) [1] => Array ( [id] => 21152 [genre] => ["ACTION"]
Array
(
[0] => Array
(
[id] => 21153
[genre] => ["History","Drama", "Thriller"]
)
[1] => Array
(
[id] => 21152
[genre] => ["ACTION"]
)
[2] => Array
(
[id] => 21151
[genre] => ["ROMANTIC"]
)
[3] => Array
(
[id] => 21150
[genre] => ["Drama"]
)
)
我真的不明白结果数组有什么意义,但这里是:
在数组中循环,在类型中循环,并将项目推送到新数组中
Array(
[History] => "History"
[ACTION] => "ACTION"
[ROMANTIC] => "ROMANTIC"
[Drama] => "Drama"
[Thriller]=>"Thriller"
)
可以使用foreach()循环和如下所示的in_array()函数来完成
$myArray=array();
$array = array(
array("id"=>21153,"genre"=>array("History","Drama", "Thriller")),
array("id"=>21152,"genre"=>array("ACTION")),
array("id"=>21151,"genre"=>array("ROMANTIC")),
array("id"=>21150,"genre"=>array("Drama"))
);
foreach($array as $arr){
foreach($arr as $genres){
if(is_array($genres)){
foreach($genres as $elem){
if (!in_array($elem, $myArray))
{
$myArray[$elem]=$elem;
}
}
}
}
}
print_r($myArray);
这是一个解决您所问问题的函数,尽管我不确定值和键相同是否很有用。我只是在所有性别上循环,只添加我在返回数组中没有存储的性别。您的代码可能有点危险,因为它区分大小写
function getGenders(array $rawValues) :array {
$distinctGenders = [];
foreach ($rawValues as $row) {
foreach ($row["genre"] as $gender) {
if (!in_array($gender, $distinctGenders)) {
$distinctGenders[$gender] = $gender;
}
}
}
return $distinctGenders;
}
通过改变,我已经解决了这个问题
$responseData = Array(
[0] => Array
(
[id] => 21153
[genre] => ["History","Drama", "Thriller"]
)
[1] => Array
(
[id] => 21152
[genre] => ["ACTION"]
)
[2] => Array
(
[id] => 21151
[genre] => ["ROMANTIC"]
)
[3] => Array
(
[id] => 21150
[genre] => ["Drama"]
)
foreach ($responseData as $data){
$strReplace = str_replace(array('[',']') , '' , $data['genre']);
$explodeData[] = explode(',', $strReplace);
}
爆炸后的输出为:
$explodeData = Array
(
[0]=>阵列
(
[0]=>“历史记录”
[1] =>“戏剧”
[2] =>“惊悚片”
)
)
最后通过foreach循环:
foreach ($explodeData as $arr) {
foreach ($arr as $genres) {
if (!in_array($genres, $myArray)) {
$myArray[$genres] = $genres;
}
}
}
最后,所需的输出如下:
Array(
["History"] => "History"
["Drama"] => "Drama"
["Thriller"] => "Thriller"
["ACTION"] => "ACTION"
["ROMANTIC"] => "ROMANTIC"
)
你尝试了什么,哪里卡住了?“应该有任何重复的值”-你想要哪一个重复的值?有一个类似于值的索引有什么意义?这个[流派]=>[“历史”,“戏剧”,“惊悚片”]
的格式让我感到困惑。这是打印的输出吗?
??“类型”是什么数据类型?要通过print\r
实现此输出,它必须是文本字符串[“History”,“戏剧性”,“Thriller”]
“并且应该有任何重复的值”-对不起,我的错误,我们不应该允许任何重复的键和值对
foreach ($explodeData as $arr) {
foreach ($arr as $genres) {
if (!in_array($genres, $myArray)) {
$myArray[$genres] = $genres;
}
}
}
Array(
["History"] => "History"
["Drama"] => "Drama"
["Thriller"] => "Thriller"
["ACTION"] => "ACTION"
["ROMANTIC"] => "ROMANTIC"
)