根据数组值动态放置数组条件

时间:2018-10-31 06:56:16

标签: php

我有以下数组。我想根据各节的动态设置条件。

stdClass Object
    (
        [content_form] => Array
            (
                [0] => genre
                [1] => cast
                [2] => category
            )

        [content_type] => stdClass Object
            (
                [genre] => Array
                    (
                        [0] => History
                        [1] => ACTION
                        [2] => ROMANTIC
                    )

                [cast] => Array
                    (
                        [0] => 13128
                        [1] => 13127
                    )

                [category] => Array
                    (
                        [0] => 4119
                        [1] => 4118
                        [2] => 4081
                    )

            )

        [conditions] => Array
            (
                [0] => OR
                [1] => AND
            )

        )

在上面的content_form数组中,有3个数组值,并且在第0个索引类型中,存在第一个索引类型和第二个索引类别。

类似地,对于content_type,存在3个数组值,并且在最后一个数组条件下出现。

我的要求是,根据接下来的内容,我想对它们进行调整。     示例-((类型或类型)AND类别)

类似地,如果我的输出如下所示,则条件为     示例-(类型或演员)

        [content_form] => Array
        (
            [0] => genre
            [1] => cast
        )

    [content_type] => stdClass Object
        (
            [genre] => Array
                (
                    [0] => History
                    [1] => ACTION
                    [2] => ROMANTIC
                )

            [cast] => Array
                (
                    [0] => 13128
                    [1] => 13127
                )

        )

    [conditions] => Array
        (
            [0] => OR
        )

    )

如果我的输出如下所示,则没有其他键的情况,它将返回简单的结果。

 stdClass Object
(
    [content_form] => Array
        (
            [0] => cast
        )

    [content_type] => stdClass Object
        (
            [cast] => Array
                (
                    [0] => 13128
                    [1] => 13127
                )

        )

    [conditions] => Array
        (
        )

)

如何按照content_type和conditions数组的顺序按节动态地执行此操作?

1 个答案:

答案 0 :(得分:1)

我们已经做到了。请检查:

$jsonData = '{"content_form":["genre","cast","category", "prakash"],"content_type":{"genre":["History","ACTION","ROMANTIC"],"cast":["13128","13127"],"category":["4119","4118","4081"]},"conditions":["OR","AND","OR"]}';
$contentIds = array(
    'genre'=>array(1,2,3),
    'cast'=>array(1,2,4),
    'category'=>array(3,2,7),
    'prakash'=>array(1,2,3,8,9)
);
$arrayDecode = json_decode($jsonData,true);
$result = array();
foreach($arrayDecode['conditions'] as $key=>$val){
    if($result){
        $secondArr = $contentIds[$arrayDecode['content_form'][$key+1]];
        $result  = array_merge($result, $secondArr); 
    } else {
        $firstArr = $contentIds[$arrayDecode['content_form'][$key]];
        $secondArr = $contentIds[$arrayDecode['content_form'][$key+1]];
        $result  = array_merge($firstArr, $secondArr);
    }
    if($val=='OR'){
        $result = array_unique($result);
    } else {
        $result = array_diff_assoc($result, array_unique($result));
    }
}
$result = array_values($result);
print_r($result);

让我知道这是您的要求吗?