[]
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?
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);
}
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..
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))
}
}
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