array_diff не выводит то, что должно быть в PHP

#php #mysql #array-difference

#php #mysql #массив-разница

Вопрос:

у меня проблема с array_diff.

У меня есть текстовое поле с юридическими адресами электронной почты. Я получаю их из базы данных mysql. Когда я вставляю их в текстовую область, я также сохраняю их в массиве.

Когда форма отправлена, у меня есть функция, которая берет содержимое текстовой области и сравнивает его с первым массивом. Таким образом, я могу видеть, добавил ли пользователь другой адрес электронной почты.

Моя проблема в том, что array_diff выводит весь массив, а не элементы, которые отличаются.

Я попытался вывести массивы до их сравнения, и они оба имеют правильные значения. Когда я пробовал использовать фиктивные массивы с жестко заданными значениями, вывод был правильным.

Что может вызвать это?

Ответ №1:

Это зависит от того, как вы добавляете в текстовую область и как вы их возвращаете.

Предполагая, что у вас есть адреса электронной почты в отдельных строках в базе данных, вы можете объединить их с n в текстовой области, а затем продолжить n … но если вы используете Windows, тогда строки разделяются rn символом, поэтому вы будете сравнивать email@example.com с email@example.comr , что отличается. Это приведет к тому, что весь массив будет указан в списке без какой-либо видимой причины.

Комментарии:

1. Я использую это, чтобы получить содержимое текстовой области: $text = trim($_POST[‘textarea’]); $NewMail = explode(» n», $text); $NewMail = array_filter($NewMail, ‘trim’);

2. Да, так что, если вы используете Windows (для просмотра и отправки текстовой области, а не самого сервера), тогда вы можете заблудиться r . Попробуйте $text = trim(str_replace("r","",$_POST['textare'])); (и это textare или textarea есть?)

3. Это текстовое поле. Но Windows? Я думаю, это PHP-скрипт на сервере apache. При добавлении значений из базы данных в текстовую область у меня возникает цикл с #value . » n»

4. Я не ясно выражаюсь. На каком компьютере ВЫ работаете? Тот, в котором у вас открыт браузер, тот, который вы используете, чтобы нажать кнопку отправки?

5. У меня Macbook с OSX Lion