PluginProbe ʕ •ᴥ•ʔ
Smush – Image Optimization, Compression, Lazy Load, WebP & CDN / 4.1.0
Smush – Image Optimization, Compression, Lazy Load, WebP & CDN v4.1.0
4.1.0 4.0.3 4.0.2 2.8.1 2.9.1 3.0.0 3.0.1 3.0.2 3.1.1 3.10.1 3.10.2 3.10.3 3.11.1 3.12.3 3.12.4 3.12.5 3.12.6 3.13.0 3.13.1 3.13.2 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.2 3.16.4 3.16.5 3.16.6 3.17.0 3.17.1 3.18.0 3.18.1 3.2.0.1 3.2.1 3.2.2.1 3.2.4 3.20.0 3.21.1 3.22.1 3.22.3 3.23.0 3.23.1 3.23.2 3.23.3 3.23.4 3.24.0 3.24.0-beta.2 3.3.0 3.3.1 3.3.2 3.4.1 3.4.2 3.6.1 3.6.3 3.7.0 3.7.1 3.7.2 3.7.3 3.8.2 3.8.3 3.8.4 3.8.5 3.8.7 3.8.8 3.9.0 3.9.1 3.9.11 3.9.2 3.9.4 3.9.5 3.9.8 3.9.9 trunk 1.0.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.2 1.2.1 1.2.10 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.5.1 1.6.5.2 1.6.5.3 1.6.5.4 1.7 1.7.1 1.7.1.1 2.0 2.0.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.6.2 2.0.6.3 2.0.6.5 2.0.7 2.0.7.1 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.2 2.3 2.3.1 2.4 2.4.2 2.4.3 2.4.4 2.4.5 2.5.2 2.5.3 2.6.1 2.6.2 2.6.3 2.7 2.7.1 2.7.4 2.7.4.1 2.7.5 2.7.6 2.7.8 2.7.8.1 2.7.9.1 2.8.0 2.8.0.1
wp-smushit / core / class-array-utils.php
wp-smushit / core Last commit date
api 2 days ago background 2 days ago backups 2 days ago bulk 2 days ago cache 2 days ago cli 2 days ago external 2 days ago frontend 2 days ago integrations 2 days ago lazy-load 2 days ago media 2 days ago media-library 2 days ago membership 2 days ago modules 2 days ago parser 2 days ago photon 2 days ago png2jpg 2 days ago product-analytics 2 days ago rating-notification 2 days ago resize 2 days ago security 2 days ago smush 2 days ago srcset 2 days ago stats 2 days ago threads 2 days ago transform 2 days ago class-abstract-settings-dto.php 2 days ago class-activity-log-controller.php 2 days ago class-animated-status-controller.php 2 days ago class-array-utils.php 2 days ago class-attachment-id-list.php 2 days ago class-backup-size.php 2 days ago class-configs.php 2 days ago class-controller.php 2 days ago class-core.php 2 days ago class-cron-controller.php 2 days ago class-deprecated-hooks.php 2 days ago class-error-handler.php 2 days ago class-file-system.php 2 days ago class-file-utils.php 2 days ago class-format-utils.php 2 days ago class-helper.php 2 days ago class-hub-connector.php 2 days ago class-installer.php 2 days ago class-keyword-exclusions.php 2 days ago class-modules.php 2 days ago class-multisite-utils.php 2 days ago class-optimization-controller.php 2 days ago class-optimizer.php 2 days ago class-plugin-settings-watcher.php 2 days ago class-rest.php 2 days ago class-server-utils.php 2 days ago class-settings-controller.php 2 days ago class-settings-dto.php 2 days ago class-settings-sanitizer.php 2 days ago class-settings.php 2 days ago class-shim.php 2 days ago class-smush-file.php 2 days ago class-stats.php 2 days ago class-string-utils.php 2 days ago class-time-utils.php 2 days ago class-timer.php 2 days ago class-upload-dir.php 2 days ago class-url-utils.php 2 days ago class-urls-exclusions.php 2 days ago class-wp-query-utils.php 2 days ago wp-compat.php 2 days ago
class-array-utils.php
86 lines
1 <?php
2
3 namespace Smush\Core;
4
5 class Array_Utils {
6 public function array_hash( $array, $keys = array() ) {
7 $hash = 0;
8 if ( is_array( $array ) ) {
9 foreach ( $array as $key => $value ) {
10 if ( is_array( $value ) ) {
11 $value_hash = $this->array_hash(
12 $value,
13 array_merge( $keys, array( $key ) )
14 );
15 } else {
16 $prefix = join( '~', $keys );
17 $value_hash = crc32( $prefix . $value );
18 }
19
20 $hash += $value_hash;
21 }
22 }
23
24 return $hash;
25 }
26
27 public function get_array_value( $haystack, $key, $default_value = null ) {
28 if ( empty( $key ) ) {
29 return $default_value;
30 }
31
32 if ( ! is_array( $key ) ) {
33 $key = array( $key );
34 }
35
36 if ( ! is_array( $haystack ) ) {
37 return $default_value;
38 }
39
40 $value = $haystack;
41 foreach ( $key as $key_part ) {
42 $value = isset( $value[ $key_part ] ) ? $value[ $key_part ] : $default_value;
43 }
44
45 return $value;
46 }
47
48 public function put_array_value( &$haystack, $value, $keys ) {
49 if ( ! is_array( $keys ) ) {
50 $keys = array( $keys );
51 }
52
53 $pointer = &$haystack;
54 foreach ( $keys as $key ) {
55 if ( ! isset( $pointer[ $key ] ) ) {
56 $pointer = empty( $pointer ) ? array() : $pointer;
57 $pointer[ $key ] = array();
58 }
59 $pointer = &$pointer[ $key ];
60 }
61 $pointer = $value;
62 }
63
64 public function ensure_array( $array ) {
65 return empty( $array ) || ! is_array( $array )
66 ? array()
67 : $array;
68 }
69
70 /**
71 * WARNING: This trick works only for arrays in which all the values are valid keys.
72 * @see https://stackoverflow.com/a/8321701
73 *
74 * @param $array scalar[]
75 *
76 * @return array Unique array
77 */
78 public function fast_array_unique( $array ) {
79 if ( ! is_array( $array ) ) {
80 return array();
81 }
82
83 return array_keys( array_flip( $array ) );
84 }
85 }
86