0

ATTRIBUTE_TYPEをATTRIBUTEIDに関連付けるこのjsonから配列を作成するにはどうすればよいですか。現在、次のjsonが返されています。

(
    [success] => 1
    [ATTRIBUTES_COUNT] => 106
    [ATTRIBUTES] => Array
        (
            [0] => Array
                (
                    [ATTRIBUTE_TYPE] => email
                    [DATA_TYPE] => CHAR
                    [COMPARE_COUNT] => 2
                    [COMPARE] => Array
                        (
                            [0] => Array
                                (

                                    [ATTRIBUTE_ID] => 4222
                                    [DESCR] => Equals
                                )

                            [1] => Array
                                (

                                    [ATTRIBUTE_ID] => 4223
                                    [DESCR] => Not Equal
                                )

                        )

                )

            [1] => Array
                (
                    [ATTRIBUTE_TYPE] => interest
                    [DATA_TYPE] => MONEY
                    [COMPARE_COUNT] => 7
                    [COMPARE] => Array
                        (
                            [0] => Array
                                (

                                    [ATTRIBUTE_ID] => 4006
                                    [COMPARE_DESCR] => Not Equal
                                )

                            [1] => Array
                                (

                                    [ATTRIBUTE_ID] => 4000
                                    [COMPARE_DESCR] => Equals
                                )

                            [2] => Array
                                (

                                    [ATTRIBUTE_ID] => 4001
                                    [COMPARE_DESCR] => Greater Than
                                )

                       )

                )
)

ここで、json_decodeの後に次のような配列を返す配列を作成します。

{
    "DETAILS": [
        {

            "ATTRIBUTE_ID": "4222",
            "ATTRIBUTE_TYPE": "email",

        },
        {

            "ATTRIBUTE_ID": "4006",
            "ATTRIBUTE_TYPE": "interest",


        }
    ]
}

同じ属性タイプが複数の属性IDを持つことができます。

4

1 に答える 1

1

これは特にエレガントではありませんが、試してみてください($ inputArrayは、質問の先頭に投稿した、深くネストされた配列です)。

$desiredArray = array("DETAILS" => array());

foreach($inputArray["ATTRIBUTES"] as $attribute)
{
    foreach($attribute["COMPARE"] as $compare)
    {
        $desiredArray["DETAILS"][] = array("ATTRIBUTE_ID" => $compare["ATTRIBUTE_ID"],
            "ATTRIBUTE_TYPE" => $attribute["ATTRIBUTE_TYPE"]);
    }
}

$desiredJson = json_encode($desiredArray);
于 2012-09-18T20:56:11.513 に答える