PHP: belli bir anahtar ile Dizi elemanları

2 Cevap php

Ben böyle bir PHP dizi (sans sözdizimi) var:

array
(
    ['one'] => array (
                      ['wantedkey'] => 5
                      ['otherkey1'] => 6
                      ['otherkey2'] => 7
                     )
    ['two'] =>  => array (
                      ['otherkey1'] => 5
                      ['otherkey2'] => 6
                      ['wantedkey'] => 7
                     )
    ['three'] =>  => array (
                      ['otherkey1'] => 5
                      ['wantedkey'] => 6
                      ['otherkey2'] => 7
                     )
)

Ben örnek için array_walk_recursive kullanarak yaşıyorum 'wantedkey' anahtar ile sadece elemanları için değerleri yazdırmak için en iyi yolu nedir?

Teşekkürler!

2 Cevap

Bu işi gibi bir şey değil miydi?

function test_print($item, $key) {
  if ($key === 'wantedkey') {
    print $item;
  }
}

array_walk_recursive($myarray, 'test_print');

Yoksa ihtiyaçlarınız şey eksik? [Ben sanırım]

Yani sizin için ne arıyorsanız taşıma şey olabilir en iyi yolu gibi bir şey olurdu:

function inner_walk ($item, $key) {
  if ($key === 'wantedkey2') {
    print $item;
  }
}

function outer_walk ($item, $key) {
  if (($key === 'wantedkey1') && (is_array($item)) {
    array_walk($item,'inner_walk');
  }
}

array_walk($myarray,'outer_walk');

Ile problem array_walk_recursive Eğer dizideki nerede aslında size olmamasıdır. Siz teoride array_walk_recursive yukarıdaki ile benzer bir şey geçerli olabilir, ancak yalnızca kullanarak iki boyutlu bir dizi sundu beri array_walk sadece iyi çalışması gerekir.

Ben burada çok şey mising, ama neden sadece onların üzerinde foreach değil olabilir?

foreach($myarray as $subarray) {
    echo $subarray['wantedkey'];
}

Onun array_walk_recursive kullanarak yana değil doğrudan özgün soru cevap vermez, ama daha az karmaşıklık ile ne sormak yapmak gibi görünüyor. Ben yanlış mı?