Я извлекаю данные из базы данных, и эти значения имеют формат массива, и я хочу сравнить оба массива.
$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\"]"]
И echo $x; ничего вам не даст, array_diff() вернет в результате массив.
@RiggsFolly: согласен...
@RiggsFolly, я просто обновляю свой вопрос.
Нет, вы добавили совершенно НОВУЮ проблему, которой не было в исходном вопросе.
после вашего предложения я просто включаю то, что мне показывает вывод :(
Может быть, взгляните на stackoverflow.com/questions/279170/utf-8-на всем протяжении






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, я удалил свой ответ, отвлекся на встречу, поэтому не увидел изменения вопроса :) Naughty Naughty OP
@devpro я пробовал, если я прямо объявил так, это прекрасно показывает разницу, но мне нужно из базы данных :(
Вы изменили $d на $d[] и $d1, как указано в ответе, и как предложил riggsfolly @MeenaArumugam
@devpro да, я изменил
это новые проблемы @MeenaArumugam, каков результат print_r(array_diff($d,$d1));
@devpro звучит так, как будто это может иметь какое-то отношение к кодированию
@MeenaArumugam: каков тот же результат? каков результат print_r(array_diff($d,$d1))
@devpro это выходной массив ( [0] => ["manomhae4006","pr3740"] )
@MeenaArumugam: ["manomhae4006","pr3740"] и ["pr3740","gajaraja8196"] оба массива? правильно??? или нет??
@MeenaArumugam: поделитесь также результатами $d и $d1
Я думаю, вы нашли место, где Алиса попала в Кроличью нору :)
@RiggsFolly: может быть... но чувствую усталость :(
Не удивлен, до сих пор не могу сдаться :-( ...или можешь :-)
@RiggsFolly: Нет! ожидание ответа :)
$dдолжен быть$d[], я думаю, а$d1должен быть$d1[]