![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /home/fdshops/public_html/vendor/spatie/data-transfer-object/src/ |
<?php namespace Spatie\DataTransferObject; use ArrayAccess; class Arr { public static function only($array, $keys): array { return array_intersect_key($array, array_flip((array) $keys)); } public static function except($array, $keys): array { return static::forget($array, $keys); } public static function forget($array, $keys): array { $keys = (array) $keys; if (count($keys) === 0) { return $array; } foreach ($keys as $key) { // If the exact key exists in the top-level, remove it if (static::exists($array, $key)) { unset($array[$key]); continue; } // Check if the key is using dot-notation if (! str_contains($key, '.')) { continue; } // If we are dealing with dot-notation, recursively handle i $parts = explode('.', $key); $key = array_shift($parts); if (static::exists($array, $key) && static::accessible($array[$key])) { $array[$key] = static::forget($array[$key], implode('.', $parts)); if (count($array[$key]) === 0) { unset($array[$key]); } } } return $array; } public static function get($array, $key, $default = null) { if (! static::accessible($array)) { return $default; } if (is_null($key)) { return $array; } if (static::exists($array, $key)) { return $array[$key]; } if (strpos($key, '.') === false) { return $array[$key] ?? $default; } foreach (explode('.', $key) as $segment) { if (static::accessible($array) && static::exists($array, $segment)) { $array = $array[$segment]; } else { return $default; } } return $array; } public static function accessible($value) { return is_array($value) || $value instanceof ArrayAccess; } public static function exists($array, $key): bool { if ($array instanceof ArrayAccess) { return $array->offsetExists($key); } return array_key_exists($key, $array); } }