Разница между двумя массивами в php

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

  $u1 = "meenu1294";
  $u2 = "pr3740";
  $sql = "SELECT managers FROM users WHERE id = '$u1'";
  $res = mysqli_query($con,$sql);
  while($r = mysqli_fetch_assoc($res))
  {
     $d = $r['managers'];
   }
  $sql1 = "SELECT managers FROM users WHERE id = '$u2'";
  $res1 = mysqli_query($con,$sql1);
  while($r1 = mysqli_fetch_assoc($res1))
  {
     $d1 = $r1['managers'];
  }

  $x = array_diff($d,$d1);
  echo json_encode($x);

Но это показывает, как

** Warning: array_diff(): Argument #1 is not an array in C:\xampp\htdocs\ofppl\sample.php on line 19 **

Дайте мне предложение Заранее спасибо

ответ на первое поле запроса - ["manomhae4006","pr3740"]

второй ответ поля запроса - ["pr3740","gajaraja8196"]

но echo json_encode($x); показывает ["[\"manomhae4006\",\"pr3740\"]"]

$d должен быть $d[], я думаю, а $d1 должен быть $d1[]
devpro 01.02.2019 13:27

И echo $x; ничего вам не даст, array_diff() вернет в результате массив.

devpro 01.02.2019 13:35
Большая заметка Это не совсем честно по отношению к тем, кто дает вам ответы, если после получения ответа вы меняете вопрос!!!!!
RiggsFolly 01.02.2019 13:53

@RiggsFolly: согласен...

devpro 01.02.2019 13:54

@RiggsFolly, я просто обновляю свой вопрос.

Meena Arumugam 01.02.2019 13:57

Нет, вы добавили совершенно НОВУЮ проблему, которой не было в исходном вопросе.

RiggsFolly 01.02.2019 13:58

после вашего предложения я просто включаю то, что мне показывает вывод :(

Meena Arumugam 01.02.2019 14:06

Может быть, взгляните на stackoverflow.com/questions/279170/utf-8-на всем протяжении

RiggsFolly 01.02.2019 14:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
51
1

Ответы 1

array_diff() нужны оба параметра как массив, и вы даете ему строку.

Вам нужно хранить значения в массиве примерно так:

$d[] = $r['managers'];
$d1[] = $r['managers'];

Пример:

Лучше инициировать перед вашим while loop как:

$d = array(); // this will save empty array error.
while($r = mysqli_fetch_assoc($res))
{
    $d[] = $r['managers'];
}

И echo $x; ничего вам не даст, array_diff() вернет в результате массив.

Боковое примечание: выполните то же действие для $d1.

From PHP Manual: array_diff() Compares array1 against one or more other arrays and returns the values in array1 that are not present in any of the other arrays.

Редактировать: Согласно вашему редактированию, это невозможно, поскольку я проверяю ваш код, это дает мне такой результат:

<?php
$array1 = ["manomhae4006","pr3740"];
$array2 = ["pr3740","gajaraja8196"];
$diff = array_diff($array1, $array2);
echo "<pre>";
print_r($diff); // Result is Array ( [0] => manomhae4006  )

$jsonResult = json_encode($diff);
echo $jsonResult; // Result is ["manomhae4006"]
?>

@MeenaArumugam: я пробовал, и он отлично работает ... на моей стороне.

devpro 01.02.2019 13:49

Приветствую вас @devpro, я удалил свой ответ, отвлекся на встречу, поэтому не увидел изменения вопроса :) Naughty Naughty OP

RiggsFolly 01.02.2019 13:52

@devpro я пробовал, если я прямо объявил так, это прекрасно показывает разницу, но мне нужно из базы данных :(

Meena Arumugam 01.02.2019 13:56

Вы изменили $d на $d[] и $d1, как указано в ответе, и как предложил riggsfolly @MeenaArumugam

devpro 01.02.2019 13:57

@devpro да, я изменил

Meena Arumugam 01.02.2019 13:58

это новые проблемы @MeenaArumugam, каков результат print_r(array_diff($d,$d1));

devpro 01.02.2019 14:00

@devpro звучит так, как будто это может иметь какое-то отношение к кодированию

RiggsFolly 01.02.2019 14:03

@MeenaArumugam: каков тот же результат? каков результат print_r(array_diff($d,$d1))

devpro 01.02.2019 14:16

@devpro это выходной массив ( [0] => ["manomhae4006","pr3740"] )

Meena Arumugam 01.02.2019 14:19

@MeenaArumugam: ["manomhae4006","pr3740"] и ["pr3740","gajaraja8196"] оба массива? правильно??? или нет??

devpro 01.02.2019 14:21

@MeenaArumugam: поделитесь также результатами $d и $d1

devpro 01.02.2019 14:22

Я думаю, вы нашли место, где Алиса попала в Кроличью нору :)

RiggsFolly 01.02.2019 14:30

@RiggsFolly: может быть... но чувствую усталость :(

devpro 01.02.2019 14:32

Не удивлен, до сих пор не могу сдаться :-( ...или можешь :-)

RiggsFolly 01.02.2019 14:33

@RiggsFolly: Нет! ожидание ответа :)

devpro 01.02.2019 14:34

Другие вопросы по теме