note 21725 modified in function.array-unique by vrana

From: Date: Tue, 17 Aug 2004 14:50:32 +0000
Subject: note 21725 modified in function.array-unique by vrana
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-79987@lists.php.net to get a copy of this message
array_unique() doesn't return anything useful if your input is an array containing arrays. This function overcomes the problem. Any level of recursions is possible here. If the input is a plain array, the result is compatible with array_unique() result. <?php function recursivemakehash($tab) { if(!is_array($tab)) return $tab; $p = ''; foreach($tab as $a => $b) $p .= sprintf('%08X%08X', crc32($a), crc32(recursivemakehash($b))); return $p; } function array_unique2($input) { $dumdum = array(); foreach($input as $a => $b) $dumdum[$a] = recursivemakehash($b); $newinput = array(); foreach(array_unique($dumdum) as $a => $b) $newinput[$a] = $input[$a]; return $newinput; } ?> --was-- array_unique() doesn't return anything useful if your input is an array containing arrays. This function overcomes the problem. Any level of recursions is possible here. If the input is a plain array, the result is compatible with array_unique() result. function recursivemakehash($tab) { if(!is_array($tab)) return $tab; $p = ''; foreach($tab as $a => $b) $p .= sprintf('%08X%08X', crc32($a), crc32(recursivemakehash($b))); return $p; } function array_unique2($input) { $dumdum = array(); foreach($input as $a => $b) $dumdum[$a] = recursivemakehash($b); $newinput = array(); foreach(array_unique($dumdum) as $a => $b) $newinput[$a] = $input[$a]; return $newinput; } http://php.net/manual/en/function.array-unique.php

« previous php.notes (#79987) next »