This commit is contained in:
74
application/helpers/array_helper.php
Normal file
74
application/helpers/array_helper.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Easy!Appointments - Open Source Web Scheduler
|
||||
*
|
||||
* @package EasyAppointments
|
||||
* @author A.Tselegidis <alextselegidis@gmail.com>
|
||||
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
|
||||
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
|
||||
* @link http://easyappointments.org
|
||||
* @since v1.4.0
|
||||
* ---------------------------------------------------------------------------- */
|
||||
|
||||
if (!function_exists('is_assoc')) {
|
||||
/**
|
||||
* Check if an array is an associative array.
|
||||
*
|
||||
* @param array $array
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function is_assoc(array $array): bool
|
||||
{
|
||||
if (empty($array)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return array_keys($array) !== range(0, count($array) - 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('array_find')) {
|
||||
/**
|
||||
* Find the first array element based on the provided function.
|
||||
*
|
||||
* @param array $array
|
||||
* @param callable $callback
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function array_find(array $array, callable $callback): mixed
|
||||
{
|
||||
if (empty($array)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!is_callable($callback)) {
|
||||
throw new InvalidArgumentException('No filter function provided.');
|
||||
}
|
||||
|
||||
return array_values(array_filter($array, $callback))[0] ?? null;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('array_fields')) {
|
||||
/**
|
||||
* Keep only the provided fields of an array.
|
||||
*
|
||||
* @param array $array
|
||||
* @param array $fields
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function array_fields(array $array, array $fields): array
|
||||
{
|
||||
return array_filter(
|
||||
$array,
|
||||
function ($field) use ($fields) {
|
||||
return in_array($field, $fields);
|
||||
},
|
||||
ARRAY_FILTER_USE_KEY,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user