Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сранение элементов двух массивов
 
 автор: romza   (13.01.2006 в 14:19)   письмо автору
 
 

Есть две строки которые нужно сравнить между собой на наличие всех слов содержащихся во второй строке, и если слова присутствуют, то осуществляем вывод...

Делаем из обоих строк массивы:

$a = "И днем и нечью кот ученый";
$exp_a = explode(" ", $a);
( получаем массив Array ( [0] => И [1] => днем [2] => и [3] => ночью [4] => кот [5] => ученый )

$ b = "нечью ученый днем";
$exp_b= explode(" ", $b);

( получаем массив Array ( [0] => ночью [1] => ученый [2] => днем )

А как сравнить эти массивы и если слова из второго массива присутствуют в первом сделать вывод....

   
 
 автор: romza   (13.01.2006 в 14:44)   письмо автору
 
   для: romza   (13.01.2006 в 14:19)
 

Ну не уж то ни у кого не возникло такой задачи???

   
 
 автор: Loki   (13.01.2006 в 15:29)   письмо автору
 
   для: romza   (13.01.2006 в 14:19)
 

Лобовой вариант:

<?
$a 
"И днем и нечью кот ученый";
$exp_a explode(" "$a);
"нечью ученый днем";
$exp_bexplode(" "$b);

$test=true;
foreach (
$exp_b as $val)
{
 if (!
in_array($val$exp_a))
 
$test=false;
}
if (
$test) echo "все искомые слова присутствуют в первой строке";

   
 
 автор: romza   (13.01.2006 в 16:15)   письмо автору
 
   для: Loki   (13.01.2006 в 15:29)
 

А где у меня ошибка???

$a=$_GET["a"];
$arr=$arr["s"]["k"];


while (list($k, $v) = each ($arr))
{

   $exp_v = explode(" ", $v["e"]); //
   $exp_a = explode(" ", $a);

   $simile=true;
   foreach ($exp_a as $val) 
   { 
      if (!in_array($val, $exp_v)) 
      $simile=false; 
   }

   if ($simile) echo 
   '<div>'.($k+1).'<a href="'.$v["h"].'"  target="_blank"><b>'.$v["e"].'</b></a></div>';
}

   
 
 автор: Loki   (13.01.2006 в 17:15)   письмо автору
 
   для: romza   (13.01.2006 в 16:15)
 

Может и у меня ошибка - мне протестировать не на чем:)
Я просто сам алгоритм привел.

   
 
 автор: romza   (13.01.2006 в 17:27)   письмо автору
 
   для: Loki   (13.01.2006 в 17:15)
 

Мож кто проверит еще...

   
 
 автор: Loki   (13.01.2006 в 22:17)   письмо автору
 
   для: romza   (13.01.2006 в 17:27)
 

Сейчас запустил свой код - абсолютно рабочий. Так что проверяйте что за данные вы ему скармливаете.

   
 
 автор: isset   (13.01.2006 в 18:12)   письмо автору
 
   для: romza   (13.01.2006 в 14:19)
 


<?php
$a 
"И днем и нечью кот ученый";
$exp_a explode(" "$a);
$exp_a[] = null;

$b "нечью ученый днем";
$exp_b explode(" "$b);

$exp_b array_pad ($exp_bcount($exp_a), null);

if(
count(array_diff($exp_b$exp_a)) === 0) {
   echo 
"ok";
}
?>

   
 
 автор: romza   (16.01.2006 в 10:05)   письмо автору
 
   для: isset   (13.01.2006 в 18:12)
 

Огромное Вам спасибо!!! Буду разбирать и анализировать пример....

   
 
 автор: romza   (16.01.2006 в 12:43)   письмо автору
 
   для: romza   (16.01.2006 в 10:05)
 

Появился вопрос... а как я могу получить числовое значение общего колличества совпавших строк???

И еще одно ... есть зависимость от регистра.... которую можно обойти воспользовавшись функцией strtr( )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования