php in_array () eşleşmeyen

3 Cevap php

İlk dizi $ related_docs denilen ve üzerinde ikinci $ all_docs olur. Ben ikinci dizi "1" değeri ile ilk dizi "1" değerini eşleştirmek çalışıyorum.

    Array
(
    [0] => 1
)
Array
(
    [0] => Array
        (
            [id] => 1
            [type_name] => bla1
        )

    [1] => Array
        (
            [id] => 2
            [type_name] => bla2
        )

    [2] => Array
        (
            [id] => 3
            [type_name] => bla3
        )
    )

Ben ilk diziden herhangi değerleri yapar ikinci dizi meydana olmadığını görmek için çalışıyorum, ama script "hayır" hiçbir şey yazdırır ama. Neden ki? Ben hiçbir fark yapar ama bir $ için if () deyiminde değişen $ all_docs denedim.

foreach($all_docs as $a)
  {
   if( in_array($related_docs, $all_docs) )   
   {
    print "yes";
   }
   else print "no";
  }

Ben ikinci dizide ardışık aramak gerekir mi?

3 Cevap

Sen in_array() yapamayacağı bir özyinelemeli arama yapmak için çalışıyoruz. Sadece çok ilkel içeri arama dizinin ilk seviye karşı maç

Belki this implementation özyinelemeli İn_Array () ne ihtiyaç için çalışıyor.

Alternatif olarak, satırlar boyunca bir şey kullanmak:

function id_exists ($search_array, $id)
 {
   foreach ($search_array as $doc)
    if ($doc["id"] == $id) return true;

   else return false;

 }

foreach($all_docs as $a)
  {
   if(  id_exists($related_docs, $a) )   
   {
    print "yes";
   }
   else print "no";
  }
function in_array_multiple(array $needles, array $haystacks) {
foreach($haystacks as $haystack) {
    foreach($needles as $needle) {
        if(in_array($needle, $haystack)) {
            return true;
        }
    }
}
return false;
}

(Bu iteratif bir işlev değil, bir özyinelemeli biridir.)

Denemek

$a = array(1);
$b = array(
    array('id' => 1, 'type_name' => 'bla1'),
    array('id' => 2, 'type_name' => 'bla2'),
    array('id' => 3, 'type_name' => 'bla3'),
);

ID $ b $ in varsa denetleme, bu yüzden bunu tarif edilenden başka bir şekilde yuvarlak, ama sonuç önemli olmamalıdır:

foreach($b as $c) {
    echo in_array($c['id'], $a) ? 'yes' : 'no';
}

Bu jenerik değil, ama ne isterseniz onu yapar.