PHP: Nasıl belirli bir anahtar ve dönüş değeri tüm girişler için bir dizi arama yapabilirim?

3 Cevap php

Ben gibi çok yönlü bir dizi var:

$array = array(
  array('test'=>23, 'one'=>'etc' , 'blah'=>'blah'),
  array('test'=>123, 'one'=>'etc' , 'blah'=>'blah'),
  array('test'=>33, 'one'=>'etc' , 'blah'=>'blah'),
);

Nasıl tüm tuşların 'test' için dizi aramak ve değerini almak için? Ben dizide bulunan 'testi' tüm değerleri eklemek istiyorsanız, bu yüzden örneğin ''214 ile gelirdim. Dizi, herhangi bir derinlik olmalı ama önemli ne olursa olsun aynı olacaktır.

3 Cevap

Recursive diziler işlemek için.

$array = array(
  array('test' => 23, 'one' => array("a" => "something", "test" => 28), 'blah' => array("test" => 21)),
  array('test' => 123, 'one' => 'etc' , 'blah' => 'blah'),
  array('test' => 33, 'one' => 'etc' , 'blah' => 'blah'),
);

function recursiveSum($array, $keyToSearch) {
    $total = 0;
    foreach($array as $key => $value) {
        if(is_array($value)) {
            $total += recursiveSum($value, $keyToSearch);
        }
        else if($key == $keyToSearch) {
            $total += $value;
        }
    }
    return $total;
}

$total = recursiveSum($array, "test");
$total = 0;
function crawl( $array ) {
    global $total;

    if( is_array( $array ) ) {
        foreach( $array as $key=>$val ) {

            if( $key === "test" ) {             
                $total = $total + $val;             
            }

            crawl( $val );          
        }
    }

    return $total;  
}

Herhangi bir derinlik.