SORU
23 NİSAN 2009, PERŞEMBE


PHP JavaScript eşdeğer'In in_array()

JavaScript bir şekilde bir diziden değerleri karşılaştırmak ve eğer başka bir dizi olup olmadığını görmek için var mı?

Benzer in_array. PHP işlevi?

CEVAP
23 NİSAN 2009, PERŞEMBE


Hayır, kimse yok. Bu nedenle en popüler kütüphaneler yarar paketlerinden biri ile birlikte gelir. Bu bir WordPress kullanmak göz atıninArrayve PrototipArray.indexOförnekler için.

bu jQuery uygulaması tahmin edebileceğiniz gibi: bu kadar basit

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i  ) {
        if(haystack[i] == needle) return true;
    }
    return false;
}

Eğer dizi elemanlarının aklı başında bir miktar ile ilgili ise yukarıdaki güzel hile yapacak.

EDİT: Hoppala. Bile bir dizi başka içinde görmek istediğini fark etmedim. PHP belgelerine göre bu PHP beklenen davranış in_array.

$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}

// Output:
//  'ph' was found
//  'o' was found

Kodu Chris ve Alex tarafından yayınlanan bu davranış izleyin. Alex'in Prototipi adres bilgisi resmi sürümü ve Chris'in array_intersect daha çok PHP. Bu senden ne istiyor:

function arrayCompare(a1, a2) {
    if (a1.length != a2.length) return false;
    var length = a2.length;
    for (var i = 0; i < length; i  ) {
        if (a1[i] !== a2[i]) return false;
    }
    return true;
}

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i  ) {
        if(typeof haystack[i] == 'object') {
            if(arrayCompare(haystack[i], needle)) return true;
        } else {
            if(haystack[i] == needle) return true;
        }
    }
    return false;
}

Ve bu yukarıdaki: benim test

var a = [['p','h'],['p','r'],'o'];
if(inArray(['p','h'], a)) {
    alert('ph was found');
}
if(inArray(['f','i'], a)) {
    alert('fi was found');
}
if(inArray('o', a)) {
    alert('o was found');
}  
// Results:
//   alerts 'ph' was found
//   alerts 'o' was found

Ben kasıtlı olarak genellikle bunu yapmak için kötü bir fikir olduğu gibi Dizi prototip içermiyordu unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008