PHP: Geçerli dizi anahtarı almak?

2 Cevap php
$array = ( 
    array('1231415'=>array('foo'=>'bar', 'test'=> 1)),
    array('32434'=>array('foo'=>'bar', 'test'=> '0')),
    array('123244'=>array('foo'=>'bar', 'test'=> 0)),
    array('193928'=>array('foo'=>'bar', 'test'=> 1))
);

(Birçok) rastgele anahtarları, kimlik numarası olan bir dizi var. Ben ise 'test' = 1 olan her dizi test etmek gerekir, ve bu yüzden bir foreach döngü yaptı.

foreach ($array as $sub) {
  if ($sub['test'] == '1' ) {
     echo 'User: ' . $sub . ' has test = 1';
  }
}

Bu çalışır, ancak 'Kullanıcı: Array vardır test = 1' döndürür

Nasıl yeryüzünde hangi kimlik numarası, (random sayı) almak için onu test = 1 var?

I $array as $sub=>$value yapıyor çalıştı, ama nedense sadece foreach çalışmaz hale getirir. Teşekkür ederiz!

2 Cevap

Yerine bu foreach sözdizimini kullanın:

foreach ($array as $key => $sub) {
  if ($sub['test'] == '1' ) {
    echo 'User: ' . $key . ' has test = 1';
  }
}

Bu, veri formunda olduğu varsayılmaktadır:

$array = array(
  '1234' => array('test' => 1),
  '5678' => array('test' => 2)
);

Eğer şimdi olduğu gibi veri tutmak gerekiyorsa, daha fazla gibi bir şey kullanmak gerekir:

foreach ($array as $item) {
  list($key, $info) = $item;
  if ($info['test'] == 1) {
    echo 'User: ' . $key . ' has test = 1';
  }
}

Kodunuzu 2 sorunlar vardır.

1) Sizin dizi beyanı hafifçe yukarı berbat. Bu deneyin:

$array = array( 
   '1231415'=>array('foo'=>'bar', 'test'=> 1),
   '32434'=>array('foo'=>'bar', 'test'=> 0),
   '123244'=>array('foo'=>'bar', 'test'=> 0),
   '193928'=>array('foo'=>'bar', 'test'=> 1)
);

2) için foreach, sen id anahtarı kaybediyoruz olarak. Bu deneyin:

foreach ($array as $id => $sub) {
    if ($sub['test'] == 1) {
        echo "User: " . $id . " has test = 1\n";
    }
}

Benim testte yukarıdaki çıkışlar:

User: 1231415 has test = 1
User: 193928 has test = 1