%PDF- %PDF-
Direktori : /home/lightco1/www/lightingrepublic.com.au/libraries/cegcore/libs/ |
Current File : /home/lightco1/www/lightingrepublic.com.au/libraries/cegcore/libs/arr.php |
<?php /** * ChronoCMS version 1.0 * Copyright (c) 2012 ChronoCMS.com, All rights reserved. * Author: (ChronoCMS.com Team) * license: Please read LICENSE.txt * Visit http://www.ChronoCMS.com for regular updates and information. **/ namespace GCore\Libs; /* @copyright:ChronoEngine.com @license:GPLv2 */defined('_JEXEC') or die('Restricted access'); defined("GCORE_SITE") or die; class Arr { //is assoc array public static function is_assoc($arr){ return (bool)count(array_filter(array_keys($arr), 'is_string')); } //normalizes a multi dimensional array into 1 dimension public static function normalize($array = array()){ $return = array(); foreach($array as $k => $v){ if(is_array($v)){ $return = array_merge(self::normalize($v), $return); }else{ $return[] = $v; } } return $return; } //extract the value at the supplied path from the supplied data array public static function getVal($array, $indexes = array(), $default = NULL){ if(empty($indexes)){ return $array; } if(count($indexes) == 1){ if(is_array($array) AND isset($array[$indexes[0]])){ return $array[$indexes[0]]; }else{ //return $default; } } $index = array_shift($indexes); if($index == '[n]' AND is_array($array)){ //indexed numeric loop $data_array = array(); foreach($array as $k => $v){ $data_array[$k] = self::getVal($array[$k], $indexes, $default); } return $data_array; }else{ if(isset($array[$index])){ return self::getVal($array[$index], $indexes, $default); }else{ return $default; } } } //set some array value at the given path and return the modified array back public static function setVal($array, $indexes, $value){ if(is_array($array)){ eval('$array["'.implode('"]["', $indexes).'"] = $value;'); } return $array; } //flatten multi dimensional array public static function flatten($array, $preserve_keys = 0, &$out = array()){ foreach($array as $key => $child){ if(is_array($child)){ $out = self::flatten($child, $preserve_keys, $out); }elseif($preserve_keys + is_string($key) > 1){ $out[$key] = $child; }else{ $out[] = $child; } } return $out; } //search array for the given value public static function searchVal($array, $indexes, $values = array()){ $values = (array)$values; if(count($indexes) == 1){ if(is_array($array) AND isset($array[$indexes[0]]) AND in_array($array[$indexes[0]], $values)){ return $array; }else{ return array(); } } $index = array_shift($indexes); if($index == "[n]" AND is_array($array)){ //indexed numeric loop $data_array = array(); foreach($array as $k => $v){ $data_array[$k] = self::searchVal($array[$k], $indexes, $values); } return array_filter($data_array); }else{ if(isset($array[$index])){ return self::searchVal($array[$index], $indexes, $values); }else{ return array(); } } } public static function multisort($array, $path = '', $flag = SORT_ASC){ $temp = array(); foreach($array as $k => $item){ $temp[$k] = self::getVal($item, explode('.', $path), null); } array_multisort($temp, $flag, $array); return $array; } //private static function /*public static function __search($array, $params = array('value' => '')){ $results = array(); if(is_array($array)){ $value = $params['value']; if(isset($params['key'])){ $key = $params['key']; if(isset($array[$key]) AND $array[$key] == $value){ $results[] = $array; } }else{ foreach($array as $k => $v){ if($v == $value){ $results[] = $array; } } } foreach($array as $subarray){ $results = array_merge($results, self::search($subarray, $params)); } } return $results; }*/ }