Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php将子数组转换为数组而不重复数组值_Php_Arrays_Multidimensional Array - Fatal编程技术网

如何使用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"
)