Dizi / PHP ebeveyn anahtarı bulun

2 Cevap php

Belki birisi bu konuda bana yardımcı olabilir:

I'm using a basic search function to find an array deep within an array. The problem is, once that array is found, I'd also like to return it's parent key. Is there a PHP function that can determine the parent key of an array?

Aşağıda Arama Fonksiyonu bir örnektir ... İdeal bulunan dizi, bunun yanı sıra ana anahtar geri dönmek istiyorum.

    function search($array, $key, $value){
    $results = array();

    if (is_array($array)){
        if ($array[$key] == $value){
            $results[] = $array;
        }
        foreach ($array as $subarray){
            $results = array_merge($results, search($subarray, $key, $value));
        }   
    }

    return $results;
}

HERE IS AN EXAMPLE TO BETTER ILLUSTRATE WHAT I MEAN: Here is an example of an array I'd like to search:

    Array
(
    [categories] => Array
        (
            [1] => Array
                (
                    [data] => 
                    [id] => d
                    [name] => Bracelets
                    [products] => Array
                        (
                            [0] => Array
                                (
                                    [id] => j
                                    [name] => Red
                                    [data] => 
                                )

                            [1] => Array
                                (
                                    [id] => gi
                                    [name] => Torqoise
                                    [data] => 
                                )

                        )

                )

Ben "j" 'id' ile bir şeyler ararsanız, ben sonuç olarak bu diziyi alacağı:

Array
(
    [0] => Array
        (
            [id] => j
            [name] => Red
            [data] => 
        )

)

Şimdi, ideal Ben de açıkçası sonuçları dönmeden önce almak gerekir örnekte 'Products' Bu Dizisi ana anahtar, bilmek istiyorum ...

2 Cevap

Eğer değeri ile anahtarı almak, böylece anahtarı ve değerlerini takas () array_flip kullanabilirsiniz.

Sen de biraz böyle bir şey için foreach değiştirebilir

foreach ($array as $subarray_key => $subarray){
  $results = array_merge($results, search($subarray, $key, $value));
}

ve $ subarray_key anahtar olacaktır.

Hayır, hiçbir fonksiyonu yoktur inşa edilmiştir. Sen fonksiyon params ana anahtar iletebilirsiniz