[]

php dizi karşılaştırma sorunu

şimdi arkadaşlar,

bi tane iki boyutlu dizi var ve içeriği string, bir tane tek boyutlu dizi var içeriği yine string.

tek boyutlu diziyi matrisin satırlarıyla karşılaştırmak istiyorum ve bunun sonucunda aynı elemanları ve sayısını bulsun istiyorum.

içi içe for lar kullandık olmadı daha sonra array_intersect kullandık yine olmadı. nasıl yapabilirim? hata nerede acaba?

 
her iki diziyi ve tam olarak ne yapmak istediğini o diziler üzerinden yazsan?


  • vi3e  (06.12.10 23:21:52) 
normal şartlarda array_intersect ile karşılaştıramazsınız zaten 2 boyutlu ile tek boyutlu dizileri. boş döner sonuç. iç içe for ile karşılaştırabilirsin aslında. boyut sayısının belli olmadığı durumlar için recursive bi foreach fonksiyonu yazıp, döndürüp kontrol edebilirsin. hatta her elemanı döndürmek yerine recursive foreach ile array_intersect'i de birleştirebilirsin performans açısından. sen girdi elemanlarını ver, çıktı da böyle olacak de uygun işlemi yazalım sana.


  • emrag  (06.12.10 23:33:40 ~ 23:34:03) 
içerik dizisinde google dan gelen description var..içerik_dizi de ise description ın kelimeleri diziye atıldı. sozcukler dizisinde ise aranılacak kelimeler tutuluyor.
eşleme puanı ise description ın içinde kaç tane eşleşen eleman olduğunu tutuyor. aşağıdakini iç içe for kullanarakta yaptım ama if içinde sozcukler icerik_dizi ye eşit mi diye baktım olmadı.

for ($i=0;$i<10;$i++) {
$icerik_dizi= array();
$icerik_dizi[$i] = explode( " ", $icerik[$i] ); //
$length = count ($icerik_dizi[$i]);
print_r($icerik_dizi);
print_r($sozcukler);
$temp = array ();
$temp = array_intersect($sozcukler, $icerik_dizi);
print_r($temp);
$esleme_puani = count ($temp);
}
  • contavolta  (06.12.10 23:36:20) 
img704.imageshack.us

burda sayfanın kaynağı var..bunlar içerik_dizi si..birde sozcukler dizim var. o da atatürk yılında doğmuştur elemanlarından oluşan 3 elemanlı dizi.

ikisini karşılaştırıp ortak olanların sayısını bulmak istiyorum..
  • contavolta  (06.12.10 23:44:10) 
doğru anladıysam şöyle bişey?

for($i=0;$i<count($icerik);$i++) {

$icerik_dizi = explode( " ", $icerik[$i] ); //

for($z=0;$z<count($icerik_dizi);$z++) {
echo count(array_intersect($sozcukler, $icerik_dizi))
}
}
  • vi3e  (06.12.10 23:52:59 ~ 07.12.10 00:22:49) 
vi3e'nin cevabı çözmüş sanırım sorunu ama substr_count, str_word_count ve array_count_values fonksiyonlarına da bir göz at derim manual'den. konuyla çok yakından alakalı bunlar. aklında bulunsun yani.


  • emrag  (07.12.10 01:31:25) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.