| Line 1... | Line 1... | 
      
        | 1 | <?php | 1 | <?php | 
      
        | 2 | // +----------------------------------------------------------------------+ | 2 | // +----------------------------------------------------------------------+ | 
      
        | 3 | // | PHP Version 4                                                        | | 3 | // | PHP Version 4                                                        | | 
      
        | 4 | // +----------------------------------------------------------------------+ | 4 | // +----------------------------------------------------------------------+ | 
      
        | 5 | // | Copyright (c) 1997-2004 The PHP Group                                | | 5 | // | Copyright (c) 1997-2004 The PHP Group                                | | 
      
        | 6 | // +----------------------------------------------------------------------+ | 6 | // +----------------------------------------------------------------------+ | 
      
        | 7 | // | This source file is subject to version 3.0 of the PHP license,       | | 7 | // | This source file is subject to version 3.0 of the PHP license,       | | 
      
        | 8 | // | that is bundled with this package in the file LICENSE, and is        | | 8 | // | that is bundled with this package in the file LICENSE, and is        | | 
      
        | 9 | // | available at through the world-wide-web at                           | | 9 | // | available at through the world-wide-web at                           | | 
      
        | 10 | // | http://www.php.net/license/3_0.txt.                                  | | 10 | // | http://www.php.net/license/3_0.txt.                                  | | 
      
        | 11 | // | If you did not receive a copy of the PHP license and are unable to   | | 11 | // | If you did not receive a copy of the PHP license and are unable to   | | 
      
        | 12 | // | obtain it through the world-wide-web, please send a note to          | | 12 | // | obtain it through the world-wide-web, please send a note to          | | 
      
        | 13 | // | license@php.net so we can mail you a copy immediately.               | | 13 | // | license@php.net so we can mail you a copy immediately.               | | 
      
        | 14 | // +----------------------------------------------------------------------+ | 14 | // +----------------------------------------------------------------------+ | 
      
        | 15 | // | Authors: Aidan Lister <aidan@php.net>                                | | 15 | // | Authors: Aidan Lister <aidan@php.net>                                | | 
      
        | 16 | // +----------------------------------------------------------------------+ | 16 | // +----------------------------------------------------------------------+ | 
      
        | 17 | // | 17 | // | 
      
        | 18 | // $Id: array_intersect_uassoc.php,v 1.5 2005/01/26 04:55:13 aidan Exp $ | 18 | // $Id: array_intersect_uassoc.php,v 1.5 2005/01/26 04:55:13 aidan Exp $ | 
      
        | 19 |   | 19 |   | 
      
        | 20 |   | 20 |   | 
      
        | 21 | /** | 21 | /** | 
      
        | 22 |  * Replace array_intersect_assoc() | 22 |  * Replace array_intersect_assoc() | 
      
        | 23 |  * | 23 |  * | 
      
        | 24 |  * @category    PHP | 24 |  * @category    PHP | 
      
        | 25 |  * @package     PHP_Compat | 25 |  * @package     PHP_Compat | 
      
        | 26 |  * @link        http://php.net/function.array_intersect_uassoc | 26 |  * @link        http://php.net/function.array_intersect_uassoc | 
      
        | 27 |  * @author      Aidan Lister <aidan@php.net> | 27 |  * @author      Aidan Lister <aidan@php.net> | 
      
        | 28 |  * @version     $Revision: 1.5 $ | 28 |  * @version     $Revision: 1.5 $ | 
      
        | 29 |  * @since       PHP 5 | 29 |  * @since       PHP 5 | 
      
        | 30 |  * @require     PHP 4.0.6 (is_callable) | 30 |  * @require     PHP 4.0.6 (is_callable) | 
      
        | 31 |  */ | 31 |  */ | 
      
        | 32 | if (!function_exists('array_intersect_uassoc')) { | 32 | if (!function_exists('array_intersect_uassoc')) { | 
      
        | 33 |     function array_intersect_uassoc() | 33 |     function array_intersect_uassoc() | 
      
        | 34 |     { | 34 |     { | 
      
        | 35 |         // Sanity check | 35 |         // Sanity check | 
      
        | 36 |         $args = func_get_args(); | 36 |         $args = func_get_args(); | 
      
        | 37 |         if (count($args) < 3) { | 37 |         if (count($args) < 3) { | 
      
        | 38 |             user_error('Wrong parameter count for array_intersect_ukey()', E_USER_WARNING); | 38 |             user_error('Wrong parameter count for array_intersect_ukey()', E_USER_WARNING); | 
      
        | 39 |             return; | 39 |             return; | 
      
        | 40 |         } | 40 |         } | 
      
        | 41 |   | 41 |   | 
      
        | 42 |         // Get compare function | 42 |         // Get compare function | 
      
        | 43 |         $compare_func = array_pop($args); | 43 |         $compare_func = array_pop($args); | 
      
        | 44 |         if (!is_callable($compare_func)) { | 44 |         if (!is_callable($compare_func)) { | 
      
        | 45 |             if (is_array($compare_func)) { | 45 |             if (is_array($compare_func)) { | 
      
        | 46 |                 $compare_func = $compare_func[0] . '::' . $compare_func[1]; | 46 |                 $compare_func = $compare_func[0] . '::' . $compare_func[1]; | 
      
        | 47 |             } | 47 |             } | 
      
        | 48 |             user_error('array_intersect_uassoc() Not a valid callback ' . | 48 |             user_error('array_intersect_uassoc() Not a valid callback ' . | 
      
        | 49 |                 $compare_func, E_USER_WARNING); | 49 |                 $compare_func, E_USER_WARNING); | 
      
        | 50 |             return; | 50 |             return; | 
      
        | 51 |         } | 51 |         } | 
      
        | 52 |   | 52 |   | 
      
        | 53 |         // Check arrays | 53 |         // Check arrays | 
      
        | 54 |         $array_count = count($args); | 54 |         $array_count = count($args); | 
      
        | 55 |         for ($i = 0; $i !== $array_count; $i++) { | 55 |         for ($i = 0; $i !== $array_count; $i++) { | 
      
        | 56 |             if (!is_array($args[$i])) { | 56 |             if (!is_array($args[$i])) { | 
      
        | 57 |                 user_error('array_intersect_uassoc() Argument #' . | 57 |                 user_error('array_intersect_uassoc() Argument #' . | 
      
        | 58 |                     ($i + 1) . ' is not an array', E_USER_WARNING); | 58 |                     ($i + 1) . ' is not an array', E_USER_WARNING); | 
      
        | 59 |                 return; | 59 |                 return; | 
      
        | 60 |             } | 60 |             } | 
      
        | 61 |         } | 61 |         } | 
      
        | 62 |   | 62 |   | 
      
        | 63 |         // Compare entries | 63 |         // Compare entries | 
      
        | 64 |         $result = array(); | 64 |         $result = array(); | 
      
        | 65 |         foreach ($args[0] as $k => $v) { | 65 |         foreach ($args[0] as $k => $v) { | 
      
        | 66 |             for ($i = 0; $i < $array_count; $i++) { | 66 |             for ($i = 0; $i < $array_count; $i++) { | 
      
        | 67 |                 $match = false; | 67 |                 $match = false; | 
      
        | 68 |                 foreach ($args[$i] as $kk => $vv) { | 68 |                 foreach ($args[$i] as $kk => $vv) { | 
      
        | 69 |                     $compare = call_user_func_array($compare_func, array($k, $kk)); | 69 |                     $compare = call_user_func_array($compare_func, array($k, $kk)); | 
      
        | 70 |                     if ($compare === 0 && $v == $vv) { | 70 |                     if ($compare === 0 && $v == $vv) { | 
      
        | 71 |                         $match = true; | 71 |                         $match = true; | 
      
        | 72 |                         continue 2; | 72 |                         continue 2; | 
      
        | 73 |                     } | 73 |                     } | 
      
        | 74 |                 } | 74 |                 } | 
      
        | 75 |   | 75 |   | 
      
        | 76 |                 if ($match === false) {  | 76 |                 if ($match === false) {  | 
      
        | 77 |                     continue 2; | 77 |                     continue 2; | 
      
        | 78 |                 } | 78 |                 } | 
      
        | 79 |             } | 79 |             } | 
      
        | 80 |   | 80 |   | 
      
        | 81 |             if ($match === true) { | 81 |             if ($match === true) { | 
      
        | 82 |                 $result[$k] = $v; | 82 |                 $result[$k] = $v; | 
      
        | 83 |             } | 83 |             } | 
      
        | 84 |         } | 84 |         } | 
      
        | 85 |   | 85 |   | 
      
        | 86 |         return $result; | 86 |         return $result; | 
      
        | 87 |     } | 87 |     } | 
      
        | 88 | } | 88 | } | 
      
        | 89 |   | 89 |   | 
      
        | 90 | ?> | 90 | ?> | 
      
        | 91 |  | 91 |  |