Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/inc/lib/array.lib.php

143 lines
3.2 KiB

<?php
/* For licensing terms, see /license.txt */
/**
* This is the array library for Chamilo.
* Include/require it in your code to use its functionality.
*
* @package chamilo.library
*/
/**
* Removes duplicate values from a dimensional array
*
* @param array $array dimensional array
* @return array an array with unique values
*
*/
function array_unique_dimensional($array)
{
if (!is_array($array)) {
return $array;
}
foreach ($array as &$myvalue) {
$myvalue = serialize($myvalue);
}
$array = array_unique($array);
foreach ($array as &$myvalue) {
$myvalue = unserialize($myvalue);
}
return $array;
}
/**
*
* Sort multidimensional arrays
*
* @param array unsorted multidimensional array
* @param string key to be sorted
* @return array result array
* @author found in http://php.net/manual/en/function.sort.php
*/
function msort($array, $id = 'id', $order = 'desc')
{
if (empty($array)) {
return $array;
}
$temp_array = array();
while (count($array) > 0) {
$lowest_id = 0;
$index = 0;
foreach ($array as $item) {
if ($order == 'desc') {
if ($item[$id] < $array[$lowest_id][$id]) {
$lowest_id = $index;
}
} else {
if ($item[$id] > $array[$lowest_id][$id]) {
$lowest_id = $index;
}
}
$index++;
}
$temp_array[] = $array[$lowest_id];
$array = array_merge(
array_slice($array, 0, $lowest_id),
array_slice($array, $lowest_id + 1)
);
}
return $temp_array;
}
function array_walk_recursive_limited(
&$array,
$function,
$apply_to_keys_also = false
) {
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
array_walk_recursive_limited(
$array[$key],
$function,
$apply_to_keys_also
);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
/**
* @param $array
* @return mixed
*/
function utf8_sort($array)
{
$old_locale = setlocale(LC_ALL, null);
$code = api_get_language_isocode();
$locale_list = array($code.'.utf8', 'en.utf8','en_US.utf8','en_GB.utf8');
$try_sort = false;
foreach($locale_list as $locale) {
$my_local = setlocale(LC_COLLATE, $locale);
if ($my_local) {
$try_sort = true;
break;
}
}
if ($try_sort) {
uasort($array, 'strcoll');
}
setlocale(LC_COLLATE, $old_locale);
return $array;
}
/**
* @param array $array
* @param string $separator
* @return string
*/
function array_to_string($array, $separator = ',')
{
if (empty($array)) {
return '';
}
return implode($separator.' ', $array);
}