/** * Recusive alternative to ksort * * The following code block can be utilized by PEAR's Testing_DocTest * <code> * // Input // * $array = array( * "c" => array( * "d" => 4, * "a" => 1, * "b" => 2, * "c" => 3, * "e" => 5 * ), * "a" => array( * "d" => 4, * "b" => 2, * "a" => 1, * "e" => 5, * "c" => 3 * ), * "b" => array( * "d" => 4, * "b" => 2, * "c" => 3, * "a" => 1 * ) * ); * * // Execute // * ksortTree($array); * * // Show // * print_r($array); * * // expects: * // Array * // ( * // [a] => Array * // ( * // [a] => 1 * // [b] => 2 * // [c] => 3 * // [d] => 4 * // [e] => 5 * // ) * // * // [b] => Array * // ( * // [a] => 1 * // [b] => 2 * // [c] => 3 * // [d] => 4 * // ) * // * // [c] => Array * // ( * // [a] => 1 * // [b] => 2 * // [c] => 3 * // [d] => 4 * // [e] => 5 * // ) * // * // ) * </code> * * @author Kevin van Zonneveld <*****@*****.**> * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net) * @license http://www.opensource.org/licenses/bsd-license.php New BSD Licence * @version SVN: Release: $Id: ksortTree.inc.php 223 2009-01-25 13:35:12Z kevin $ * @link http://kevin.vanzonneveld.net/ * * @param array $array */ function ksortTree(&$array) { if (!is_array($array)) { return false; } ksort($array); foreach ($array as $k => $v) { ksortTree($array[$k]); } return true; }
function ksortTree(&$array, $sortMaxLevel = -1, $currentLevel = 0) { if ((int) $sortMaxLevel > -1 && $sortMaxLevel <= $currentLevel) { return false; } if (!is_array($array)) { return false; } ksort($array); foreach ($array as $k => $v) { $currentLevel++; ksortTree($array[$k], $sortMaxLevel, $currentLevel); } return true; }
public static function getSearchedPluginsThemes() { $actionID = Reg::get('currentRequest.actionID'); $datas = DB::getFields("?:temp_storage", "data", "type = 'getPluginsThemes' AND paramID = '" . $actionID . "'"); DB::delete("?:temp_storage", "type = 'getPluginsThemes' AND paramID = '" . $actionID . "'"); if (empty($datas)) { return array(); } $finalData = array(); foreach ($datas as $data) { $finalData = array_merge_recursive($finalData, (array) unserialize($data)); } arrayMergeRecursiveNumericKeyHackFix($finalData); ksortTree($finalData); //finding not installed for site view only $typeItems = array_keys($finalData['typeView']); foreach ($typeItems as $item) { foreach ($finalData['siteView'] as $siteID => $value) { if (empty($value['active'][$item]) && empty($value['inactive'][$item])) { $typeViewTemp = reset($finalData['typeView'][$item]); $finalData['siteView'][$siteID]['notInstalled'][$item] = reset($typeViewTemp); } } } return $finalData; }