Yuvalanmış dizideki değerleri ara

3 Cevap php

Aşağıdaki gibi bir dizi var

array(2) {
  ["operator"] => array(2) {
    ["qty"] => int(2)
    ["id"] => int(251)
  }
  ["accessory209"] => array(2) {
    ["qty"] => int(1)
    ["id"] => int(209)
  }
  ["accessory211"] => array(2) {
    ["qty"] => int(1)
    ["id"] => int(211)
  }
}

Ben bir id değeri dizi ve dönüş bool içinde var doğrulamak için bir yol bulmaya çalışıyorum. Ben bir döngü oluşturarak gerektirmeyen hızlı bir şekilde anlamaya çalışıyorum. In_array'in işlevini kullanarak çalışmak, ve ben de oldukça yavaş olduğunu okumadım.

Php kılavuzda birisi) flip_array () ve ardından isset (kullanılması tavsiye edilir, ama bir 2-d dizi çalışmak için alınamıyor.

gibi bir şey yapıyor

if($array['accessory']['id'] == 211)

Ayrıca benim için çalışır, ama ben aksesuar içeren tüm anahtarları maç gerekir değil - bunu nasıl emin

Anyways, I'm spinning in circles, and could use some help. This seems like it should be easy. Thanks.

3 Cevap

Belirli bir değer, dizinin içinde ise dardub Hey, doğrulamak için array_walk kullanabilirsiniz - size dizinin al elemanları aracılığıyla dolaşır array_walk ve onlara sağlanan bir işlevi applys, bu nedenle temelde bu işlevi oluşturmak gerekir. Bu aşağıdaki gibi kullanılır:

$arr = array(
    'one' => array('id' => 1),
    'two' => array('id' => 2),
    'three' => array('id' => 3)
);

function checkValue($value, $key)
{
    echo $value['id'];
}

array_walk($arr, 'checkValue');

Siz sadece ihtiyacınız istiyorum ne olursa olsun koşul / doğrulamaları, işlev eklemek gerekir.

Umarım yardımcı olur.

M.

EDIT: PHP docs on array_walk http://www.php.net/manual/en/function.array-walk.php

Bu fonksiyon in_array(211, $array['accessory']); Bu değer orada var ve gerçek döndürür görmek için bütün Belirtilen dizi doğrular yararlıdır.

in_array

$map = array();
foreach ($arr as $v) {
    $map[$v['id']] = 1;
}
//then you can just do this as when needed
$exists = isset($map[211]);

Yoksa onunla ilişkili verileri gerekiyorsa

$map = array();
foreach ($arr as $k => $v) {
    $map[$v['id']][$k] = $v;
}
print_r($map[211]);