array_udiff_variation5.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. --TEST--
  2. Test array_udiff() function : usage variation
  3. --FILE--
  4. <?php
  5. /* Prototype : array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)
  6. * Description: Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function.
  7. * Source code: ext/standard/array.c
  8. * Alias to functions:
  9. */
  10. echo "*** Testing array_udiff() : usage variation ***\n";
  11. // Initialise function arguments not being substituted (if any)
  12. $arr1 = array(1);
  13. $arr2 = array(1);
  14. echo "\n-- comparison function with an incorrect return value --\n";
  15. function incorrect_return_value ($val1, $val2) {
  16. return array(1);
  17. }
  18. var_dump(array_udiff($arr1, $arr2, 'incorrect_return_value'));
  19. echo "\n-- comparison function taking too many parameters --\n";
  20. function too_many_parameters ($val1, $val2, $val3) {
  21. return 0;
  22. }
  23. try {
  24. var_dump(array_udiff($arr1, $arr2, 'too_many_parameters'));
  25. } catch (Throwable $e) {
  26. echo "Exception: " . $e->getMessage() . "\n";
  27. }
  28. echo "\n-- comparison function taking too few parameters --\n";
  29. function too_few_parameters ($val1) {
  30. return 0;
  31. }
  32. var_dump(array_udiff($arr1, $arr2, 'too_few_parameters'));
  33. ?>
  34. ===DONE===
  35. --EXPECT--
  36. *** Testing array_udiff() : usage variation ***
  37. -- comparison function with an incorrect return value --
  38. array(1) {
  39. [0]=>
  40. int(1)
  41. }
  42. -- comparison function taking too many parameters --
  43. Exception: Too few arguments to function too_many_parameters(), 2 passed and exactly 3 expected
  44. -- comparison function taking too few parameters --
  45. array(0) {
  46. }
  47. ===DONE===