login.txt общая база, содержит в себе строки
aaa1
aaa2
aaa3
login_.txt
aaa1
aaa2
Суть скрипт надо выявить строку aaa3 и вывести ее как
echo "Еще не был: ".$lines_login[$j]."\n";
Вот сам код! не работает он, вернее работает но тока с первой строкой. Большая просьба: не надо предлагать свои варианты решения этой задачи, просто подскажите где в моем годе ошибка.
$lines_login = file('login.txt');
$lines_login_ = file('login_.txt');
$count=count($lines_login);
$count_=count($lines_login_);
$j=0;
$j_=0;
while ($j<$count) {
while ($j_<$count_) {
if ( $lines_login[$j] !== $lines_login_[$j_])
{
echo "Еще не был: ".$lines_login[$j]."\n";
}
else
{
echo "уже был: ".$lines_login[$j]."\n";
}
$j_++;
}
$j++;
}
Спустя 9 минут, 33 секунды (26.04.2011 - 17:30) Ulan написал(а):
потому что $j_ не обнуляется в теле цикла и условие $j_<$count_ будет истинно только для первого прохода
Спустя 6 минут, 56 секунд (26.04.2011 - 17:37) Krevedko написал(а):
$j_=0; напиши перед $j++;
Спустя 3 минуты, 8 секунд (26.04.2011 - 17:40) ИНСИ написал(а):
Цитата |
Большая просьба: не надо предлагать свои варианты решения этой задачи, просто подскажите где в моем годе ошибка. |
Очень жаль, ведь можно сделать код получше, понятнее и быстрее.
Спустя 7 минут, 43 секунды (26.04.2011 - 17:48) ИНСИ написал(а):
sx000 просто посмотри разницу:
$lines_login = file('login.txt');
$lines_login_ = file('login_.txt');
foreach($lines_login as $data) {
if(!in_array($data,$lines_login_))
echo echo "Еще не был: $data\n";
else
echo "уже был: $data\n";
}
Спустя 1 минута, 21 секунда (26.04.2011 - 17:49) inpost написал(а):
velbox
А ведь ты абсолютно прав, заходя в тему у меня уже было своё решение до того, как подгрузилась страница. А тут совсем другой код...
А ведь ты абсолютно прав, заходя в тему у меня уже было своё решение до того, как подгрузилась страница. А тут совсем другой код...
Спустя 2 минуты, 1 секунда (26.04.2011 - 17:51) sx000 написал(а):
Спасибо мужики, я весь вечер мозги мучал ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Да я не спорю что можно еще красивее сделать например через арей серч. Просто вы думаете так, а у меня вот пока такое мышление
, это пятый скрипт мой
навыков ноль вот и тыкаюсь.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Да я не спорю что можно еще красивее сделать например через арей серч. Просто вы думаете так, а у меня вот пока такое мышление
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 35 секунд (26.04.2011 - 17:51) walerus написал(а):
Я чего то не понимаю, а кто то отменял функцию - array_diff()???
Функция array_diff() возвращает массив, состоящий из значений массива массив_1, которые отсутствуют в любом другом массиве, перечисленном в последующих аргументах. Обратите внимание, что ключи массивов сохраняются.
Загрузить файлы в массивы
login.txt - $array1
login_.txt - $array2
$result = array_diff ($array1, $array2);
Че замарачиваться то??
Функция array_diff() возвращает массив, состоящий из значений массива массив_1, которые отсутствуют в любом другом массиве, перечисленном в последующих аргументах. Обратите внимание, что ключи массивов сохраняются.
Загрузить файлы в массивы
login.txt - $array1
login_.txt - $array2
$result = array_diff ($array1, $array2);
Че замарачиваться то??
Спустя 44 секунды (26.04.2011 - 17:52) sx000 написал(а):
foreach я вообще не понимаю покамесь ... не ну читал но не принял его еще мозг.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 1 минута, 4 секунды (26.04.2011 - 17:53) sx000 написал(а):
$result = array_diff ($array1, $array2);
красота вообще
супер просто.
красота вообще
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 3 минуты, 7 секунд (26.04.2011 - 17:56) walerus написал(а):
Цитата (velbox @ 26.04.2011 - 14:48) |
sx000 просто посмотри разницу:$lines_login = file_get_contents('login.txt'); |
Помому не будет работать, ведь file_get_contents(), прочтет файл как строку, а у тебя потом идет проверка in_array, поиск в массиве... если так, то тогда уже
$lines_login = file_get_contents('login.txt');
$lines_login = explode('\n', $lines_login);
$lines_login_ = file_get_contents('login_.txt');
$lines_login_ = explode('\n', $lines_login_);
foreach($lines_login as $data) {
if(!in_array($data,$lines_login_))
echo echo "Еще не был: $data\n";
else
echo "уже был: $data\n";
}
или я ошибся ?
Спустя 6 минут, 49 секунд (26.04.2011 - 18:03) sx000 написал(а):
$lines_login = file('login.txt');
$lines_login_ = file('login_.txt');
$result = array_diff ($lines_login, $lines_login_);
print_r($result);
к стати выводит пустой массив
просто
Array
(
)
Спустя 2 минуты, 13 секунд (26.04.2011 - 18:05) Krevedko написал(а):
у меня выводит
Array ( [1] => aaa2 [2] => aaa3 )
Array ( [1] => aaa2 [2] => aaa3 )
Спустя 2 минуты, 8 секунд (26.04.2011 - 18:08) sx000 написал(а):
у вас наверное хитрый интерпретатор ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
да все ок спасибо большое
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
да все ок спасибо большое
Спустя 6 минут, 50 секунд (26.04.2011 - 18:14) walerus написал(а):
Мб пригодится на будущее...
Функция читающая файл как массив, удаляя сразу дубли в файле, на тот случай если есть двойные, тройные.... одинаковые строки, так же игнорирует пустые строки.
вызов $data = loadAsArray('Путь к файлу');
//загружает файл как массив
function loadAsArray($filename)
{
if (!file_exists($filename))
return array();
$result = explode("\n", file_get_contents($filename));
foreach($result as &$line)
$line = trim($line, " \r\n\t");
$result = array_filter(&$result, create_function('$v', 'return !empty($v);'));
return array_values(&$result);
}
Функция читающая файл как массив, удаляя сразу дубли в файле, на тот случай если есть двойные, тройные.... одинаковые строки, так же игнорирует пустые строки.
вызов $data = loadAsArray('Путь к файлу');
Спустя 36 секунд (26.04.2011 - 18:15) ИНСИ написал(а):
Цитата |
ведь file_get_contents(), прочтет файл как строку |
Упс, перепутал функции
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 5 минут, 31 секунда (26.04.2011 - 18:20) Krevedko написал(а):
значит явно не твоя работа :D
http://phpforum.ru/index.php?showtopic=44184
http://phpforum.ru/index.php?showtopic=44184
//Очищаем столбец сортировки от повторяющихся значений
$search = array_unique($data);
$doubles = array_diff_key($data , $search);
Спустя 1 минута, 3 секунды (26.04.2011 - 18:22) ИНСИ написал(а):
Спустя 1 минута, 1 секунда (26.04.2011 - 18:23) walerus написал(а):
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 8 минут, 13 секунд (26.04.2011 - 18:31) sx000 написал(а):
ну помочь же хотел человек !!! а это важно
Спустя 5 минут, 41 секунда (26.04.2011 - 18:36) sx000 написал(а):
а как склеить два массива
$lines_login = file('login.txt');
$lines_login_ = file('login_.txt');
$lines_login_bad = file('bad.txt');
$result = array_diff ($lines_login, $lines_login_);
print_r($result);
Чтоб поискать еще и в $lines_login_bad?
$lines_login_bad и $lines_login_ склеить.
$lines_login = file('login.txt');
$lines_login_ = file('login_.txt');
$lines_login_bad = file('bad.txt');
$result = array_diff ($lines_login, $lines_login_);
print_r($result);
Чтоб поискать еще и в $lines_login_bad?
$lines_login_bad и $lines_login_ склеить.
Спустя 1 минута, 56 секунд (26.04.2011 - 18:38) Invis1ble написал(а):
array_merge() ?
Спустя 5 минут, 14 секунд (26.04.2011 - 18:44) sx000 написал(а):
$lines_login = file('login.txt');
$lines_login_ = file('login_.txt');
$lines_login_bad = file('bad.txt');
$lines_login_ = array_merge($lines_login_, $lines_login_bad);
$result = array_diff ($lines_login, $lines_login_);
print_r($result);
ага все отлично получилось, на старый код смотреть смешно даже
$lines_login_ = file('login_.txt');
$lines_login_bad = file('bad.txt');
$lines_login_ = array_merge($lines_login_, $lines_login_bad);
$result = array_diff ($lines_login, $lines_login_);
print_r($result);
ага все отлично получилось, на старый код смотреть смешно даже
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 7 минут, 28 секунд (26.04.2011 - 18:51) walerus написал(а):
Жесть )), ну кто так делает ? ))
$result = array_diff ($lines_login, $lines_login_, $lines_login_bad, $array_n);
сравниваем все массивы с первым )))
$result = array_diff ($lines_login, $lines_login_, $lines_login_bad, $array_n);
сравниваем все массивы с первым )))
Спустя 7 минут, 20 секунд (26.04.2011 - 18:58) sx000 написал(а):
![blink.gif](http://phpforum.ru/html/emoticons/blink.gif)