arama ve PHP kullanarak dizi anahtarını değiştirmek ve CakePHP Set Sınıf

1 Cevap php

i & arar fonksiyonu yazmak gerekir Aşağıdaki şekilde, çok-boyutlu bir dizide anahtarı yerine geçer:

Girdi dizisi:

 [0] => Array
    (
        [Foo] => sometext
        [Foo2] => Array
            (
                [lorem] => 1
                [Avatar2] => Array
            (
                [meta_key] => avatar2
                [meta_value] => Array
                    (
                        [small] => 65606449bb5b6d10c2dfce9ecb88fdbd-24-small.jpeg
                        [medium] => 65606449bb5b6d10c2dfce9ecb88fdbd-45-medium.jpeg
                        [large] => 65606449bb5b6d10c2dfce9ecb88fdbd-75-large.jpeg
                        [source] => 65606449bb5b6d10c2dfce9ecb88fdbd.jpg
                    )

            )
            )
        [Avatar] => Array
            (
                [meta_key] => avatar
                [meta_value] => Array
                    (
                        [small] => 65606449bb5b6d10c2dfce9ecb88fdbd-24-small.jpeg
                        [medium] => 65606449bb5b6d10c2dfce9ecb88fdbd-45-medium.jpeg
                        [large] => 65606449bb5b6d10c2dfce9ecb88fdbd-75-large.jpeg
                        [source] => 65606449bb5b6d10c2dfce9ecb88fdbd.jpg
                    )

            )
    )

[1] => Array
    (

        [Wallpaper] => Array
            (
                [meta_key] => wallpaper
                [meta_value] => Array
                    (
                        [small] => 65606449bb5b6d10c2dfce9ecb88fdbd-24-small.jpeg
                        [medium] => 65606449bb5b6d10c2dfce9ecb88fdbd-45-medium.jpeg
                        [large] => 65606449bb5b6d10c2dfce9ecb88fdbd-75-large.jpeg
                        [source] => 65606449bb5b6d10c2dfce9ecb88fdbd.jpg
                    )

            )
    )   

çıktı dizisi bu gibi görünmelidir:

      [0] => Array
    (
        [Foo] => sometext
        [Foo2] => Array
            (
                [lorem] => 1
                [Avatar2] => Array (
                        [small] => 65606449bb5b6d10c2dfce9ecb88fdbd-24-small.jpeg
                        [medium] => 65606449bb5b6d10c2dfce9ecb88fdbd-45-medium.jpeg
                        [large] => 65606449bb5b6d10c2dfce9ecb88fdbd-75-large.jpeg
                        [source] => 65606449bb5b6d10c2dfce9ecb88fdbd.jpg
                    )

            )
        [Avatar] => Array
            (
                [small] => 65606449bb5b6d10c2dfce9ecb88fdbd-24-small.jpeg
                [medium] => 65606449bb5b6d10c2dfce9ecb88fdbd-45-medium.jpeg
                [large] => 65606449bb5b6d10c2dfce9ecb88fdbd-75-large.jpeg
                [source] => 65606449bb5b6d10c2dfce9ecb88fdbd.jpg
            )
    )

[1] => Array
    (

        [Wallpaper] => Array
            (

                [small] => 65606449bb5b6d10c2dfce9ecb88fdbd-24-small.jpeg
                [medium] => 65606449bb5b6d10c2dfce9ecb88fdbd-45-medium.jpeg
                [large] => 65606449bb5b6d10c2dfce9ecb88fdbd-75-large.jpeg
                [source] => 65606449bb5b6d10c2dfce9ecb88fdbd.jpg


            )
    )

Gördüğünüz gibi, ben meta_key / meta_value bölümünü biçimlendirmeniz gerekir. Herhangi bir öneriniz (çiğ veya PHP CakePHP Set Sınıfı'nı kullanarak) bekliyoruz :) vardır

1 Cevap

Sen Defenetly Bunun için özyineleme kullanmanız gerekir:

function replace_inner_meta_keys($arr) {
    if (array_key_exists('meta_value', $arr)) {
        // return meta value instead of original array
        return $arr['meta_value'];
    }
    else {
        foreach ($arr as $key => $value) {
            if (is_array($value)) {
                // travel through array recursivly
                $arr[$key] = replace_inner_meta_keys($value);
            }
        }
        return $arr;
    }
}