Почему array_udiff() возвращает неправильные результаты, когда обратный вызов возвращает логическое значение? [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему array_udiff() возвращает неправильные результаты, когда обратный вызов возвращает логическое значение? [дубликат]

Сообщение Anonymous »

Мне трудно понять, как работает array_udiff.

Согласно документации:

< блок-цитата>
array_udiff ($array1, $array2, data_compare_func)


[...] функция data_compare_func должна возвращать целое число меньше, равное или больше нуля, если первый аргумент считается соответственно меньшим больше, равно или больше второго.


Итак, учитывая эту функцию:

function please_compare($a, $b) {
return $a !== $b;
};


если $a равно $b, метод вернет 0, в противном случае — 1 (из-за этого).

(Здесь не возвращается -1, и у меня такое ощущение, что объяснение взято отсюда, но я могу просто сравнить, что значения разные, а не то, что одно больше другого.)

Может ли кто-нибудь объяснить мне поведение array_udiff в следующий фрагмент? Я также включил вывод array_diff, и именно такого поведения я ожидал?

$array1 = array('a', 'b', 'c', 'd');
$array2 = array('a', 'b', 'c');

print_r(array_udiff($array1, $array2, 'please_compare'));
/* Returns:
Array
(
[0] => a
[1] => b
[3] => d
)
*/

print_r(array_diff($array1, $array2));
/* Returns:
Array
(
[3] => d
)
*/


Подробнее здесь: https://stackoverflow.com/questions/180 ... rns-a-bool
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»