Bir dizi ara - Ben tek dizeleri için "harika" bir dizi aramak için aşağıda bu işlevi bulundu, bir dizi değer ve veya dizi değer ve bir dizi içinde eşleşen anahtar maç olacak, ama gerçekten ne yapmak istediğinizi SADECE bir maç olduğunu TÜM arama değerleri karşılandığı dizi / döndü. search1 veya serach2 DEĞİL burada hem "arama" terimleri - - search1 ve serach2 - karşılanmaktadır sorgu örneği ya bir maç olduğunu herhangi bir kayıt için maç dönebilirdi.
örnek diziler
array 1 - key1=>search1,key2=>search2,key3=>search3,key4=>search4
array 2 - key1=>search2,key2=>search1,key3=>search4,key4=>search2
array 3 - key1=>search3,key2=>search2,key3=>search4,key4=>search1
array 4 - key1=>search1,key2=>search3,key3=>search2,key4=>search4
Bu diziler için işlevini koştu eğer öyleyse (yukarıda) O SADECE yalnızca dizi1 arama etti hem anahtar eşleşen dizi1 eşleşmesi gerekir. Array4 anahtar1 için arama eşleşmiyor rağmen key2 için arama uymuyor gibi bu sadece key2 maçları gibi bilge array3 gibi, iade edilmemelidir.
Öneriler & lütfen yardımcı olur.
function recursiveArraySearch($haystack, $needle, $index = null) {
$aIt = new RecursiveArrayIterator($haystack);
$it = new RecursiveIteratorIterator($aIt);
while($it->valid()) {
if(((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) {
return $aIt->key();
}
$it->next();
}
return false;
}
$sql = mysql_query("SELECT * FROM atable WHERE tableID = '1' ");
while($row = mysql_fetch_array($sql)):
$content = json_decode($row['tosearch']);
echo recursiveArraySearch(json_decode($row['tosearch']), 'search1','key1');
echo recursiveArraySearch(json_decode($row['tosearch']), 'search2','key2');
endwhile;
Fonksiyonu için "ideal" formatı bu gibi bir şey olacaktır:
echo recursiveArraySearch(json_decode($row['tosearch']),
array('search1'=>'key1'),array(('search2'=>'key2'));