Есть массивы с цифрами $m = array(4,5,6,7,8) $m1 = array(1,5,6,8,9);
Их нужно преобразовать в строку и после этого сравнить сколько совпадений в значениях массива, то есть по идее должно выдать два совпадение (5,6), подскажите хотя бы как преобразовать массив, а если не сложно то как реализовать задачу)
Тебе задали задание ты и думай а то ты как двоечник пытаешься подсмотреть у других, в результате в боевой ситуации ты не сможешь решить вопрос и подведешь всю команду.
Задача решается элементарными встроенными функциями php.
Учеба как раз и состоит в том чтобы тебе было сложно! Только так ты начнёшь расти. Должно быть сложно и это нормально.
Давай ты сейчас отложишь все задачи в сторону, пойдешь поспишь, а завтра с утреца спросишь что-нибудь осмысленное.
пока твои вопросы и уточнения к ним звучат как бред сумасшедшего
Immortal_pony, Есть массивы, их нужно перевести в строку, после чего сравнить на совпадение, надо чтобы индекс и значение одинаковыми(в данном случает получается 5,6) И в общем-то всё.
HelpMeeee для сравнения строк посимвольно, нужно работать с этими строками как с массивами. Подобная задача не имеет смысла. Возможно, что выходной массив надо перевести в строку после сравнения, как отметил FanatPHP
Нет, в представленных массивах совпадают три элемента: 5, 6 и 8. Впрочем, если необходимо чтоб сопадали ключ и значение, то тогда таких элементнов как раз будет два: 5 и 6
как реализовать задачу
$intersection = array_intersect_assoc($m, $m1);
PS. Если итоговый результат нужен все ж в виде строки, то можно преобразовать в нее выходной массив: $intersectionString = implode(",", $intersection);
HelpMeeee, да, это возможно. Решение заключается в том чтобы работать со строками как с массивами символов. Но у вас изначально есть массивы символов и нет никакого смысла преобразовывать их в строку
HelpMeeee, и что это? Сколько писали, что работать нужно со строками, а сами сделали непонятные foreach и добили while! Лучше использовать вариант коллеги Immortal_pony
Несколько слов о вашем коде:
1. У вас три цикла, когда все необходимые действия можно сделать внутри одного.
2. Третий цикл зачем-то while, в котром количетсво итераций равно пяти. Почему именно пяти? Из кода этого никак не понять. Это очень, очень плохая практика.
3. Вероятно в помощью этого когда вы хотели привести все значения массива к строкам. Ваш код этого не делает:
foreach ($m as $key => $value) {
$key=(string)$value;
}
Добавлю изначальный массив и вывод результатов в этот код:
Видите указание int? Это совсем не string как вы ожидали.
Что же делает ваш код? Он перебирает массив и в переменную $key записывает значение $value, приведенное строке. Впрочем, перменная $key нигде не используется и это ни на что не влияет. Можно написать похожий код, только со следующими изменениями:
Во-первых, переменную $key не использовать вовсе - ключи мы не собираемся менять
Во-вторых, переменную $value брать по ссылке, чтобы при изменении $value внутри цикла это отражалось на входном массиве
Код:
foreach ($m as &$value) { // обратите внимание на символ "&" перед переменной
$value=(string)$value;
}
В принципе, так делать можно, но я рекомендую в подобных случая использовать array_map - запись выйдет понятнее и лаконичнее: $m = array_map("strval", $m);