[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: простое сравнение
Frost-56
Здесь проблема в следующем.
в text2.txt есть 2 строки
в notext.txt 1 строка
Скрипт по идее должен сравнивать.
if($lines != $line) он почему то проигнорировал и потом он дошел до того что ему не с чем было сравнивать следующую строку и он ошибку выплюнул.

Warning: fopen() expects parameter 1 to be string, array given in /home/u11433/spss/www/ru/index3.php on line 26


$file = file('text2.txt');
$nofile = file('notext.txt');

foreach($nofile as $vals => $lines)
{
foreach($file as $val => $line)
{
if($lines != $line)
{
$intxt = fopen('notext.txt',"a+");
fwrite($intxt,"$line");
fclose($intxt);
}
}
}


Как мне правильно сделать сравнение ?



Спустя 6 минут, 49 секунд (20.01.2012 - 13:23) Winston написал(а):
Цитата (Frost-56 @ 20.01.2012 - 12:16)
Как мне правильно сделать сравнение ?


$file = file('text2.txt');
$nofile = file('notext.txt');
$diff = array_diff($nofile, $file);
file_put_contents('notext.txt', implode("\n", $diff));

Спустя 9 минут, 8 секунд (20.01.2012 - 13:32) Frost-56 написал(а):
о, спасибо)

Спустя 8 минут, 29 секунд (20.01.2012 - 13:40) killer8080 написал(а):
Frost-56
нужно полное совпадение? Или порядок строк не имеет значения?

Спустя 1 минута, 6 секунд (20.01.2012 - 13:42) Frost-56 написал(а):
порядок строк не имеет значение, лишь бы там не была найдена или не найдена такая строка

Спустя 2 минуты, 6 секунд (20.01.2012 - 13:44) killer8080 написал(а):
Цитата (Frost-56 @ 20.01.2012 - 12:42)
порядок строк не имеет значение, лишь бы там не была найдена или не найдена такая строка

Ну тогда array_diff идеально подходит smile.gif Главное чтобы файлы не были слишком большими.

Спустя 22 минуты, 30 секунд (20.01.2012 - 14:06) Frost-56 написал(а):
что то не хочет работать, жопой чую что моя ошибка, ток не вижу её.

$file = file('text2.txt');
$nofile = file('notext.txt');
$diff = array_diff($nofile, $file);

foreach($file as $val => $line)
{
if(file_put_contents('notext.txt', implode("\n", $diff)))
{ echo 'Строка найдена, иду дальше...'; }
else
{
$intxt = fopen('notext.txt',"a+");
fwrite($intxt,"$line");
fclose($intxt);
}
}

Спустя 2 минуты, 26 секунд (20.01.2012 - 14:09) Winston написал(а):
Замени свои 14 строк на мои 4

Спустя 3 минуты, 58 секунд (20.01.2012 - 14:13) Frost-56 написал(а):
а толку ? мне же проверку делать надо, если не найдена строка такая, то сделать запись.

Спустя 2 минуты, 46 секунд (20.01.2012 - 14:15) Winston написал(а):
Frost-56
Скажи честно, ты запускал мой пример? закомментируй свой код, и запусти мой.



Спустя 2 минуты, 41 секунда Winston написал(а):
PS: почитай, что делают file() и array_diff

Спустя 6 минут, 41 секунда (20.01.2012 - 14:22) Frost-56 написал(а):
запустил, ничего не изменилось.
в text.txt 2 строки в notext.txt так же 1 строка.
про array_diff почитал, понял частично.

Спустя 6 минут, 35 секунд (20.01.2012 - 14:29) Winston написал(а):
Хорошо. А так что выведет на экран?
$file = file('text2.txt');
$nofile = file('notext.txt');
$diff = array_diff($nofile, $file);
print_r($diff);




Спустя 5 минут, 1 секунда Winston написал(а):
Походу array_diff не пашет со строками в которых присутствует пробел...

Спустя 12 минут (20.01.2012 - 14:41) asokol написал(а):
Winston, smile.gif

Frost-56, "так же 1 строка" - если остается та строка, которая была до этого, то у Вас файл недоступен для записи или же не определена функция file_put_contents. Если другая (из первого файла), то все работает верно.

Спустя 6 минут, 40 секунд (20.01.2012 - 14:47) Frost-56 написал(а):
Array ( [0] => Строка1 )

вот результат.

Спустя 2 минуты, 38 секунд (20.01.2012 - 14:50) Winston написал(а):
Цитата (Frost-56 @ 20.01.2012 - 13:47)
вот результат

Это то слово которое отсутствует в text2.txt ?

Спустя 1 минута, 14 секунд (20.01.2012 - 14:51) Frost-56 написал(а):
Нет, это слово в обеих файлах присутствует, а вот слово Строка 2 есть только в text.txt

Спустя 2 часа, 10 минут, 55 секунд (20.01.2012 - 17:02) Frost-56 написал(а):
поможет кто с проверкой ?

Спустя 2 дня, 18 часов, 49 минут, 22 секунды (23.01.2012 - 11:51) Frost-56 написал(а):
ау народ)

Спустя 2 часа, 48 минут, 2 секунды (23.01.2012 - 14:39) killer8080 написал(а):
Frost-56
а так?
$file = array_map('trim', file('text2.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
$nofile = array_map('trim', file('notext.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));

$diff = array_diff($nofile, $file);
echo '<pre>'.print_r($diff, 1).'</pre>';

Спустя 7 часов, 7 минут, 31 секунда (23.01.2012 - 21:47) Frost-56 написал(а):
Вывел

Array
(
)


и в файл notxt.txt ничего не записалось.

Спустя 17 минут, 25 секунд (23.01.2012 - 22:04) Игорь_Vasinsky написал(а):
дай содержимое 2х своих файлов

Спустя 2 минуты, 55 секунд (23.01.2012 - 22:07) Frost-56 написал(а):
Файл text.txt


Строка1
Строка2


Файл notxt.txt

Строка1

Спустя 8 минут, 13 секунд (23.01.2012 - 22:15) Игорь_Vasinsky написал(а):
<?php
$arr1 = file('text2.txt');
$arr2 = file('notxt.txt');

echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
?>


на выходе

Array
(
[0] => Строка1
)

Спустя 58 секунд (23.01.2012 - 22:16) Winston написал(а):
У него походу с кодировками трабла... Если так не получается.

Спустя 1 минута, 47 секунд (23.01.2012 - 22:18) Frost-56 написал(а):
А у меня на выходе пустая страница =(

Спустя 24 секунды (23.01.2012 - 22:19) Игорь_Vasinsky написал(а):
А так что кажет?

 $arr1 = file('text2.txt');
$arr2 = file('notxt.txt');

echo '<pre>' . print_r($arr1, 1) . '</pre>';
echo '<pre>' . print_r($arr2, 1) . '</pre>';

Спустя 54 секунды (23.01.2012 - 22:20) Frost-56 написал(а):
А так, вот что показывает

Array
(
[
0] => Строка1

[1] => Строка2
)

Спустя 34 секунды (23.01.2012 - 22:20) Игорь_Vasinsky написал(а):
а второй где?

Спустя 32 секунды (23.01.2012 - 22:21) Frost-56 написал(а):
это всё что показывает, что же я врать буду)

Спустя 1 минута, 1 секунда (23.01.2012 - 22:22) Winston написал(а):
Цитата (Frost-56 @ 23.01.2012 - 21:21)
это всё что показывает, что же я врать буду)

Жесть!

Короче, перепиши все в файлах латиницей (то есть английскими символами).

И что будет выведено?

Спустя 1 минута, 15 секунд (23.01.2012 - 22:23) Игорь_Vasinsky написал(а):
у тя один файл пустой - ты сам не видишь чтоли?

Спустя 41 секунда (23.01.2012 - 22:24) Frost-56 написал(а):
разницы нету, вот что показывает

Array
(
[
0] => Str1

[1] => Str2
)


Оба файла не пустые

Спустя 1 минута, 29 секунд (23.01.2012 - 22:25) Игорь_Vasinsky написал(а):
блин. у тя тока один файл с 2мя строками.

во втором файле где одна строка - сотри её и напиши поновой, и в кокой кодировке файл - скажи?

Спустя 46 секунд (23.01.2012 - 22:26) Frost-56 написал(а):
cp1251 кодировка.
Цитата
во втором файле где одна строка - сотри её и напиши поновой

именно так и делал

Спустя 2 минуты, 2 секунды (23.01.2012 - 22:28) Winston написал(а):
Цитата (Frost-56 @ 23.01.2012 - 21:24)
разницы нету, вот что показывает

WTF??? blink.gif
У тебя срабатывает только одна print_r
Почему вторая не отображается??? Даже если файл будет пустой, то на экран массив пустой будет выведен.

Спустя 33 секунды (23.01.2012 - 22:28) Игорь_Vasinsky написал(а):
так.

выполни такой код

file_put_contents('notxt.txt', 'Строка 2');

echo '<pre>' . print_r(file('notxt.txt'), 1) . '</pre>';

Спустя 2 минуты, 13 секунд (23.01.2012 - 22:31) Frost-56 написал(а):
Выполнил код, потом раскоментировал echo и вот что показал

Array
(
[
0] => Строка 2
)

Спустя 29 секунд (23.01.2012 - 22:31) Игорь_Vasinsky написал(а):
теперь

<?php
$arr1 = file('text2.txt');
$arr2 = file('notxt.txt');

echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
?>

Спустя 1 минута, 28 секунд (23.01.2012 - 22:33) Frost-56 написал(а):
А это бредом не будет, ведь в text.txt сейчас Str1 и Str2 т.к. на англиский просили, а в notxt.txt слово Строка 2 ?

Спустя 36 секунд (23.01.2012 - 22:33) Winston написал(а):
Цитата (Frost-56 @ 23.01.2012 - 21:31)
Выполнил код, потом раскоментировал echo и вот что показал

Ёпрст, так ты закомментировал строку, а потом говоришь, что не выводит ничего, а мы здесь в шоке ohmy.gif

Спустя 1 минута, 3 секунды (23.01.2012 - 22:34) Frost-56 написал(а):
так а толку от него ? вы были в шоке ещё до того как предложили код который я раскоментил потом

Спустя 48 секунд (23.01.2012 - 22:35) Игорь_Vasinsky написал(а):
блин...

в первом файле снова нпиши свои строки - конечно это бред.

Спустя 49 секунд (23.01.2012 - 22:36) Игорь_Vasinsky написал(а):
Цитата
Ёпрст, так ты закомментировал строку, а потом говоришь, что не выводит ничего, а мы здесь в шоке


laugh.gif laugh.gif
да это в моём предпоследнем было закоментировано - я сразу раскоментировал...

Спустя 28 секунд (23.01.2012 - 22:36) Winston написал(а):
mad.gif

Спустя 1 минута, 3 секунды (23.01.2012 - 22:37) Игорь_Vasinsky написал(а):
да вот в этом же :lol:

file_put_contents('notxt.txt', 'Строка 2');

#echo '<pre>' . print_r(file('notxt.txt'), 1) . '</pre>';

Спустя 38 секунд (23.01.2012 - 22:38) Frost-56 написал(а):
так, сейчас в text.txt

Строка1
Строка2

В notxt.txt

Строка2

Использовал код :

 $arr1 = file('text2.txt');
$arr2 = file('notxt.txt');

echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';


Результат:

Array
(
)

Спустя 3 минуты, 43 секунды (23.01.2012 - 22:42) Игорь_Vasinsky написал(а):
<?php
$arr1 = file('text2.txt');
file_put_contents('notext.txt', 'Строка 2');
$arr2 = file('notxt.txt');

echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
?>

Спустя 1 минута, 19 секунд (23.01.2012 - 22:43) Frost-56 написал(а):
Array
(
[
0] => Строка 2
)

Спустя 1 минута, 27 секунд (23.01.2012 - 22:44) Игорь_Vasinsky написал(а):
юхууууу. biggrin.gif

ты как в файлы строки пишешь? в блокноте?

Спустя 2 минуты, 15 секунд (23.01.2012 - 22:47) Frost-56 написал(а):
Ну да, в тотал командере открываю через Akelpad+.

исправил из Строка 2 на Строка2 и вот результат ))

Array
(
)

Спустя 1 минута, 4 секунды (23.01.2012 - 22:48) Игорь_Vasinsky написал(а):
ты в обычном блокноте попробуй.. акела режет что то или коверкает.. там какая кодировка по умолчанию для документов? в php страницы - какая?

Спустя 2 минуты, 4 секунды (23.01.2012 - 22:50) Frost-56 написал(а):
кодировка файла 1251 (ANSI-Кириллица)
а charset в коде не выставлял и в .htaccess нету charset.

попробовал через обычный, разницы нету =(

Спустя 3 минуты, 4 секунды (23.01.2012 - 22:53) Игорь_Vasinsky написал(а):
попробуй написать

Строка 2

потом нажать enter и сохранить

и проверь код.

Спустя 1 минута (23.01.2012 - 22:54) Frost-56 написал(а):
Ничего не изменилось =(

Спустя 42 секунды (23.01.2012 - 22:55) Игорь_Vasinsky написал(а):
прикрепи свой notxt.txt

Спустя 2 минуты, 54 секунды (23.01.2012 - 22:58) Frost-56 написал(а):
прикрепил и вот весь код который использовал


<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
$arr1 = file('text2.txt');
file_put_contents('notext2.txt', 'Строка2');
$arr2 = file('notext2.txt');

echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>'; ?>

Спустя 3 минуты, 40 секунд (23.01.2012 - 23:01) Winston написал(а):
Открыл этот файл на линуксе и .... ЁПРСТ
А там такое
羊痤赅2
laugh.gif laugh.gif laugh.gif

Спустя 22 секунды (23.01.2012 - 23:02) Игорь_Vasinsky написал(а):
Array
(
[
0] => Строка1
)


с файлом - всё пучком.

Спустя 58 секунд (23.01.2012 - 23:03) Frost-56 написал(а):
Так нормально или нет ? ))))

Спустя 1 минута, 11 секунд (23.01.2012 - 23:04) Игорь_Vasinsky написал(а):
у меня нормально - под виндой денвер.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.