当前位置:  首页>> 技术小册>> PHP合辑3-数组函数

array_diff_ukey()是PHP中的一个内置函数,用于使用用户定义的函数比较两个或更多数组的键,并返回一个数组,该数组包含在array1中而不在其他数组(array2,array3或更多)中的元素。

语法:

array_diff_ukey(array1,array2, $array3…, arr_diffukeyFunction)

参数:

$array1(必需):将要与其他数组进行比较的数组。(即,从array1开始进行数组比较)。

$array2(必需):与第一个数组进行比较的数组。

$array3(可选):与第一个数组进行比较的数组。

arr_diffukeyFunction(必需):必需的用户定义函数。它是一个可调用的比较函数,该函数返回一个整数。如果第一个参数大于第二个参数,则返回大于0的值。

返回值:返回一个包含来自array1且不在其他数组(arra2,arra3,arar4等)中的元素的数组。如果所有值都存在于其他数组中,则该函数返回NULL。返回的类型是一个数组。

示例1:

  1. Input:
  2. $arr1 = array("one"=>"C Program", "two"=>"PHP Program", "three"=>"Java Program ");
  3. $arr2 = array("one"=>"Java Program", "two"=>"C++ Program", "six"=>"Java Program");
  4. Output:
  5. Array
  6. (
  7. [three] => Java Program
  8. )
  9. Explanation: First two values of arr1 are matched with arr2 and last value
  10. not matched so the function returns last value.

示例2:

  1. Input:
  2. $arr1=array("one"=>"C Program", "two"=>"PHP Program", "three"=>"Java Program ");
  3. $arr2=array("one"=>"Java Program", "two"=>"C++ Program", "three"=>"Java Program");
  4. Output:
  5. Array
  6. (
  7. )
  8. Explanation: All values are matched with arr2 so function return null values.

让我们通过一个例子来理解array_diff_ukey()函数。

程序1:采用两个数组(array1和array2)并使用用户定义的关键字比较函数(diffukeyFunction)。PHP语言的简单解决方案:

  1. <?php
  2. // Program of array_diff_ukey function in PHP
  3. function arr_diffukeyFunction($one, $two)
  4. {
  5. if ($one === $two) {
  6. return 0;
  7. }
  8. return ($one > $two) ? 1 : -1;
  9. }
  10. // Driver Code
  11. $arr1 = array(
  12. "one" => "C Program",
  13. "two" => "PHP Program",
  14. "three" => "Java Program "
  15. );
  16. $arr2 = array(
  17. "one" => "Java Program",
  18. "two" => "C++ Program",
  19. "six" => "Java Program"
  20. );
  21. $result = array_diff_ukey($arr1, $arr2, "arr_diffukeyFunction");
  22. print_r($result);
  23. ?>

output:

  1. Array
  2. (
  3. [three] => Java Program
  4. )

程序2:采用三个数组(array1、array2和arra3)并使用用户定义的关键字比较函数(diffukeyFunction)。

  1. <?php
  2. // Program of array_diff_ukey function in PHP
  3. function arr_diffukeyFunction($one, $two)
  4. {
  5. if ($one === $two) {
  6. return 0;
  7. }
  8. return ($one > $two) ? 1 : -1;
  9. }
  10. // Driver Code
  11. $arr1 = array(
  12. "one" => "C Program",
  13. "two" => "PHP Program",
  14. "three" => "Java Program "
  15. );
  16. $arr2 = array(
  17. "one" => "XML Program",
  18. "two" => "C++ Program",
  19. "four" => "CSS Program"
  20. );
  21. $arr3 = array(
  22. "five" => "MVC Program",
  23. "six" => "C# Program",
  24. "one" => "ASP .NET Program"
  25. );
  26. $result = array_diff_ukey($arr1, $arr2, $arr3, "arr_diffukeyFunction");
  27. print_r($result);
  28. ?>

output:

  1. Array
  2. (
  3. [three] => Java Program
  4. )

程序3:如果所有值在其他数组中都匹配,则返回Null

  1. <?php
  2. // Program of array_diff_ukey function in PHP
  3. function arr_diffukeyFunction($one, $two)
  4. {
  5. if ($one === $two) {
  6. return 0;
  7. }
  8. return ($one > $two) ? 1 : -1;
  9. }
  10. // Driver Code
  11. $arr1 = array(
  12. "one" => "C Program",
  13. "two" => "PHP Program"
  14. );
  15. $arr2 = array(
  16. "one" => "Java Program",
  17. "two" => "C++ Program"
  18. );
  19. $result = array_diff_ukey($arr1, $arr2, "arr_diffukeyFunction");
  20. print_r($result);
  21. ?>

output:

  1. Array
  2. (
  3. )

程序4:如果我们只采用一个数组(array1)并使用用户定义的关键字比较函数(diffukeyFunction),则没有输出,并且会给出“RUNTIME ERROR”警告消息。

  1. <?php
  2. //Program of array_diff_ukey function in PHP
  3. function arr_diffukeyFunction($one, $two)
  4. {
  5. if ($one === $two) {
  6. return 0;
  7. }
  8. return ($one > $two) ? 1 : -1;
  9. }
  10. // Driver Code
  11. $arr1 = array(
  12. "one" => "C Program",
  13. "two" => "PHP Program",
  14. "three" => "Java Program "
  15. );
  16. //take only one array
  17. $result = array_diff_ukey($arr1, "arr_diffukeyFunction");
  18. print_r($result);
  19. ?>

output:

  1. No Output

Warning:

  1. PHP Warning: array_diff_ukey(): at least 3 parameters are required,
  2. 2 given in /home/c0177af9f69e897ad93cc9855a9ae415.php on line 23