53 lines
1.1 KiB
PHP
53 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Smush\Core;
|
|
|
|
class Array_Utils {
|
|
public function array_hash( $array, $keys = array() ) {
|
|
$hash = 0;
|
|
if ( is_array( $array ) ) {
|
|
foreach ( $array as $key => $value ) {
|
|
if ( is_array( $value ) ) {
|
|
$value_hash = $this->array_hash(
|
|
$value,
|
|
array_merge( $keys, array( $key ) )
|
|
);
|
|
} else {
|
|
$prefix = join( '~', $keys );
|
|
$value_hash = crc32( $prefix . $value );
|
|
}
|
|
|
|
$hash += $value_hash;
|
|
}
|
|
}
|
|
|
|
return $hash;
|
|
}
|
|
|
|
public function get_array_value( $array, $key ) {
|
|
return isset( $array[ $key ] ) ? $array[ $key ] : null;
|
|
}
|
|
|
|
public function ensure_array( $array ) {
|
|
return empty( $array ) || ! is_array( $array )
|
|
? array()
|
|
: $array;
|
|
}
|
|
|
|
/**
|
|
* WARNING: This trick works only for arrays in which all the values are valid keys.
|
|
* @see https://stackoverflow.com/a/8321701
|
|
*
|
|
* @param $array scalar[]
|
|
*
|
|
* @return array Unique array
|
|
*/
|
|
public function fast_array_unique( $array ) {
|
|
if ( ! is_array( $array ) ) {
|
|
return array();
|
|
}
|
|
|
|
return array_keys( array_flip( $array ) );
|
|
}
|
|
}
|