Погоди, я нашел проблему. Нормально он работает, взгляни внимательно на цифры которые я прописал, я оказывается продублировал некоторые, он видно их склеил как - бы. Я разные сейчас поставил цифры, все норм стало. Но спасибо за отзывчивость большое.
Array ( [0] => Один [1] => Четыре [2] => Три [3] => Пять [4] => Яблоко ) Это тебя не смущает? --- Добавлено --- А где кривизна кода твоего ты нашел? я нашел... --- Добавлено --- Вот так можно сделать в начале. А код свой поправь сам. Подсказывать не буду. PHP: $massInput = [345345=>'Один', 456456=>'Два', 567567=>'Три', 456486=>'Четыре', 567561=>'Пять', 345347=>'Яблоко']; foreach ( $massInput as $value ) { $mass[] = $value; }
Да на здоровье! Очень часто или почти всегда есть простые решения поставленных задач. До них просто нужно додуматься. Поэтому не впадай в ступор, как в начале этой темы
Дружище привет! Можешь мне еще помочь с одним заданием. Буду очень благодарен. Есть 2 массива. PHP: $arr_one = [0=>'888', 1=>'756', 2=>'233', 3=>'455']; $arr_two = [0=>'777', 1=>'555', 2=>'444', 3=>'455']; Мне нужно сверить их значения на дубликаты. Условие такое. Если в массиве $arr_two есть значения, которые есть в массиве $arr_one, то из первого массива их надо полностью удалить и распечатать массив без них. Я вот думаю, можно ли как-то без цикла сделать, может встроенные функции какие нибудь? Типа array_unique. Но это не много не то. Заранее, большое спасибо.
@espltd А зачем без цикла? в цикде массивы перебирать - это вполне нормально и практикуется. Попробуй сам сделать. А я тебе помогу. Берешь первый элемент и сравниваешь его со всеми по очереди. Если находишь совпадение, то не сохраняешь первый элемент, если находишь то сохраняешь. Аналогично со вторым и со всеми остальными. Удалять ничего не нужно. Нужно не сохранять. Мне не сложно написать этот код. Это плевое дело. Еще проще чем то, что мы делали вчера. Но на этом форуме принято учить людей, а не всё делать за них Так что дерзай. Я в тебя верю.
Я сделал. Не много поразмышлял. Код (Text): foreach($arr_one as $key=>$item){ $used = $arr_two[$key]; if($used == $item) unset($arr_one[array_search($used,$arr_one)]); }
@espltd этот код сравнивает первый элемент первого массива с первым элементом второго, второй со вторым и т. д. т. е. если первый элемент первого массива будет совпадать с любым, кроме первого, элементом второго массива, то код не найдет совпадений. Кроме того, если массивы будут разной длинны, то он тоже сработает не корректно. Вот оно, пивко в баре в место пар Тебе нужен цикл в цикле.
Для каждого элемента ЭлементВторогоМассива Из ВторогоМассива Цикл Для каждого элемента ЭлементПервогоМассива Из ПервогоМассива Цикл Если ЭлементВторогоМассива = ЭлементПервогоМассива Тогда (Из ПервогоМассива удаляем данное значение) КонецЕсли КонецЦикла КонецЦикла Вроде так я понимаю задачу)
До меня просто не доходит, для чего цикл в цикле, если я своим кодо итак получу значения первого массива и второго... Или я чего то не учитываю? Код (Text): foreach($arr_one as $key=>$item){ $used = $arr_two[$key]; if($used == $item) unset($arr_one[array_search($used,$arr_one)]); }
Да. я попробовал. Эх, наверное мне стоило задачу целиком объяснить. Я не учел нескольких моментов. Из за этого тоже видно гемор возникает. Есть 2 текстовых файла(one.txt, two.txt). В файлике two.txt находятся циферки 222 - построчно, ну тоже самое написать 222 и нажать ентер. 3333 и нажать ентер. Построчно. В файлике one.txt тоже разные цифры - построчно и какие-то такие же как и в файле two.txt. При запуске программы у меня загружается содержимое файла one.txt в массив с находящимися в нем элементами. Для этого я использовал функцию file(); А вот теперь самое главное, программа должна записать значения из файла one.txt в two.txt но без дубликатов. Программа сверяет, что в файле two.txt уже есть значение 777, а значит данное значение мы удаляем из one.txt .... Надеюсь понятно объяснил. У меня уже голова болит от этого задания...
@espltd, тебе остается записать результат работы функции в файл --- Добавлено --- Если конечно я все правильно понял.
Вот это важная часть задачи, которой не было в посте с описанием. На выходе нужно получить третий массив, содержащий все значения без дубликатов.
mahmuzar то красавчиком оказался. Я не знал про существование этой функции. Тогда всё совсем просто и не нужен цикл в цикле PHP: $arr1 = [223, 456, 122, 545, 355, 675]; $arr2 = [432, 642, 223, 753, 864, 135, 355, 246]; $arr3 = array_diff($arr1, $arr2); // получаешь массив элементов, которые встречаются в первом массиве, // но не встречаются во втором foreach ( $arr3 as $value ) { $arr2[] = $value; // дописываешь уникальные элементы массива } // перезаписываешь файл значениями из arr2 @espltd, ты всему научишься при желании. Это задача простейшая, но видимо нужно обладать каким то мышлением, чтобы это понимать. Наверное, те, кто этим мышлением обладают и сами не понимают этого... --- Добавлено --- Я с файлами не работал никогда, поэтому точно не знаю как это работает. Если в файл можно просто дописать, то допиши arr3 и foreach вообще не нужен, а если файл полностью перезаписывается, то foreach нужен и перезаписывать надо arr2. --- Добавлено --- Ты получишь правильный результат потому, что у тебя в двух массивах совпадают и ключи и значения одного из элементов, а если значения будут совпадать, а ключи будут разные, то ты не получишь желаемого результата. Понимаешь? --- Добавлено --- У тебя в голове пивко и девочки, поэтому ты учишься по принципу ЗЗЗ - Зазубрил Здал Забыл. Это прокатывает с историей, философией и с любой другой гуманитарной хренью. Но тут надо понимать как всё работает.
Спасибо всем за помощь! Огромное спасибо... Есть у меня дурацкая привычка, не базу изучать, а сразу лезть в какие нить дебри и ломать там голову, а вот порой понимаешь, что самое сокровенное - это база(базовые знания)... Мдаааа... Большое спасибо всем за помощь! Очень благодарен!!!!
Блин ребят! Звиздец! Я такого препода впервые вижу. Он просто валит... и валит... Нужна помощь... Опять по прежнему имеем два файла - one.txt, two.txt при нажатии на кнопку и послании post запроса, нужно сверить, что если в two.txt есть такие же значения как и в файде one.txt, то мы должны их затереть в файле one.txt и распечатать полученный массив. Пост запрос я послал, распечатать массив умею, а как обработать эти долбанные дубликаты??? Меня уже трясет от этого препода((((((((((((((((((((((((((((((((((
вопрос по другому ставь, какой структурой представлены данные, если массивом например, то есть функции которые работают с массивами и могут выдать дубликаты https://secure.php.net/manual/ru/ref.array.php
ДА, массивами. Я делаю так: Код (Text): $massInput = file('one.txt', FILE_IGNORE_NEW_LINES); $massUsed = @file('two.txt', FILE_IGNORE_NEW_LINES); В файле one.txt данные записаны построчно: такого вида: 324234 222222 333333 444444 555555 Считываются в массив $massInput. И если например в файле two.txt есть 444444 и есть 333333, то нужно удалить/стереть эти элемены из файла one.txt, чтобы никаких пустых строк, чтобы именно остались нормальные значения. И распечатать полученный массив. Вот это меня и прибило((( Нужна помощь. не одолеть
Он тебя валит, скорее всего, потому, что понимает, что ты это делаешь не сам. И нервами проблему не решить. Тут нужно спокойно подойти к процессу и всё сделать. Теперь успокойся, попей чайку, покури и опиши нормально, что нужно сделать. Потому, что у меня ощущение что мы уже делали что-то очень похожее... --- Добавлено --- в смысле "распечатать"?
Объясняю. Спокойно. Без нервов В папке проекта лежат 2 файла (one.txt, two.txt); Изначально мы распечатываем массив файла one.txt(это я сделал через функцию file и сохранил в $massInput). С помощью print '<pre>'; print_r($massInput); print '</pre>'; Я печатаю массив и получаю содержимое которое в файле записано построчно. Вид содержимого в файле: 222222 333333 444444 555555 Массив распечатали - все норм. Это при условии, что во втором файле two.txt нет этих значений, которые содержаться в первом one.txt файле. А вот если в файл two.txt добавим например: 333333 555555 и обновим страницу, программа должна понять, что значение 333333, 555555 есть в файле two.txt, а значит мы их удаляем из one.txt - именно эти найденные значения!!! В итоге в файле one.txt должно остаться: 222222 444444 и соответственно распечатать полученный обработанный массив из файла one.txt !!!)) Надеюсь объяснил понятно))) Препод всех валит, злыдень программный(