Your IP : 216.73.216.240
<?php
/*
* @package Tech Fry Library
* @license https://www.gnu.org/licenses/gpl-3.0.en.html
*/
namespace TechFry\Library;
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\Utilities\ArrayHelper;
class TfArray
{
// $data - array; $result - array / string / integer
public static function process($function, $data = array(), $params = array())
{
switch ($function)
{
// One argument as array; Array is modified without returning
case 'array_pop' :
case 'array_shift' :
case 'sort' :
case 'rsort' :
case 'ksort' :
case 'krsort' :
case 'asort' :
case 'arsort' :
case 'natsort' :
case 'shuffle' :
$temp = $data;
$function($temp);
$result = $temp;
break;
// One argument as array; Returns modified array
case 'array_change_key_case' :
case 'array_count_values' :
case 'array_flip' :
case 'array_keys' :
case 'array_reverse' :
case 'array_unique' :
case 'array_values' :
case 'json_encode' :
$result = $function($data);
break;
// One argument as array; Returns result as integer or string
case 'count' :
case 'array_sum' :
case 'array_product' :
$result = $function($data);
break;
// Two arguments - data as array, 1 parameter
case 'array_chunk' :
case 'array_column' :
$result = $function($data, $params[0]);
break;
// Three arguments - data as array, 2 parameters
case 'array_pad' :
case 'array_slice' :
$result = $function($data, $params[0], $params[1]);
break;
// Special case - Modifies array without returning; 1 parameter
case 'array_push' :
case 'array_unshift' :
$temp = $data;
$function($temp, $params[0]);
$result = $temp;
break;
// Array as second argument
case 'implode' :
case 'array_search' :
case 'in_array' :
case 'array_key_exists' :
$result = $function($params[0], $data);
break;
// Data as two arrays
case 'array_merge' :
case 'array_replace' :
case 'array_combine' :
case 'array_diff' :
case 'array_diff_key' :
case 'array_diff_assoc' :
case 'array_intersect' :
case 'array_intersect_key' :
case 'array_intersect_assoc' :
$result = $function($data[0], $data[1]);
break;
// Special Method - Remove Elements
case 'remove_elements' :
$result = self::remove_elements($data, $params[0]);
break;
// Special Method - Keep Elements
case 'keep_elements' :
$result = self::keep_elements($data, $params[0]);
break;
// Special Method - Get Value
case 'get_value' :
$result = self::get_value($data, $params[0]);
break;
}
return $result;
}
// Convert array to object
public static function array_to_object(array $array)
{
return ArrayHelper::toObject($array);
}
// Convert object to array
public static function object_to_array($item)
{
return ArrayHelper::fromObject($item);
}
// Add Column
public static function add_column(array $array, array $column, $col_name)
{
return ArrayHelper::addColumn($array, $column, $col_name);
}
// Drop Column
public static function drop_column(array $array, $column)
{
return ArrayHelper::dropColumn($array, $column);
}
// Get column
public static function get_column(array $array, $column)
{
return ArrayHelper::getColumn($array, $column);
}
// Get value
public static function get_value($array, $name, $default = null)
{
return ArrayHelper::getValue($array, $name, $default);
}
// Invert array
public static function invert(array $array)
{
return ArrayHelper::invert($array);
}
public static function remove_elements($array, $regex)
{
foreach ($array as $k => $v)
{
$found = preg_match('/' . $regex . '/', $v);
if ($found)
{
unset($array[$k]);
}
}
return $array;
}
public static function keep_elements($array, $regex)
{
$new_array = array();
foreach ($array as $k => $v)
{
$found = preg_match('/' . $regex . '/', $v);
if ($found)
{
$new_array[] = $v;
}
}
return $new_array;
}
}