Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Internal/Utilitie...
File: ArrayUtil.php
<?php
[0] Fix | Delete
declare( strict_types=1 );
[1] Fix | Delete
[2] Fix | Delete
namespace Automattic\WooCommerce\Internal\Utilities;
[3] Fix | Delete
[4] Fix | Delete
/**
[5] Fix | Delete
* A class of utilities for dealing with arrays.
[6] Fix | Delete
*/
[7] Fix | Delete
class ArrayUtil {
[8] Fix | Delete
[9] Fix | Delete
/**
[10] Fix | Delete
* Determines if the given array is a list.
[11] Fix | Delete
*
[12] Fix | Delete
* An array is considered a list if its keys consist of consecutive numbers from 0 to count($array)-1.
[13] Fix | Delete
*
[14] Fix | Delete
* Polyfill for array_is_list() in PHP 8.1.
[15] Fix | Delete
*
[16] Fix | Delete
* @param array $arr The array being evaluated.
[17] Fix | Delete
*
[18] Fix | Delete
* @return bool True if array is a list, false otherwise.
[19] Fix | Delete
*/
[20] Fix | Delete
public static function array_is_list( array $arr ): bool {
[21] Fix | Delete
if ( function_exists( 'array_is_list' ) ) {
[22] Fix | Delete
return array_is_list( $arr );
[23] Fix | Delete
}
[24] Fix | Delete
[25] Fix | Delete
if ( ( array() === $arr ) || ( array_values( $arr ) === $arr ) ) {
[26] Fix | Delete
return true;
[27] Fix | Delete
}
[28] Fix | Delete
[29] Fix | Delete
$next_key = -1;
[30] Fix | Delete
[31] Fix | Delete
foreach ( $arr as $k => $v ) {
[32] Fix | Delete
if ( ++$next_key !== $k ) {
[33] Fix | Delete
return false;
[34] Fix | Delete
}
[35] Fix | Delete
}
[36] Fix | Delete
[37] Fix | Delete
return true;
[38] Fix | Delete
}
[39] Fix | Delete
[40] Fix | Delete
/**
[41] Fix | Delete
* Merge two lists of associative arrays by a key.
[42] Fix | Delete
*
[43] Fix | Delete
* @param array $arr1 The first array.
[44] Fix | Delete
* @param array $arr2 The second array.
[45] Fix | Delete
* @param string $key The key to merge by.
[46] Fix | Delete
*
[47] Fix | Delete
* @return array The merged list sorted by the key values.
[48] Fix | Delete
*/
[49] Fix | Delete
public static function merge_by_key( array $arr1, array $arr2, string $key ): array {
[50] Fix | Delete
$merged = array();
[51] Fix | Delete
// Overwrite items in $arr1 with items in $arr2 if they have the same key entry value.
[52] Fix | Delete
// The rest of items in $arr1 will be appended.
[53] Fix | Delete
foreach ( $arr1 as $item1 ) {
[54] Fix | Delete
$found = false;
[55] Fix | Delete
foreach ( $arr2 as $item2 ) {
[56] Fix | Delete
if ( $item1[ $key ] === $item2[ $key ] ) {
[57] Fix | Delete
$merged[] = array_merge( $item1, $item2 );
[58] Fix | Delete
$found = true;
[59] Fix | Delete
break;
[60] Fix | Delete
}
[61] Fix | Delete
}
[62] Fix | Delete
if ( ! $found ) {
[63] Fix | Delete
$merged[] = $item1;
[64] Fix | Delete
}
[65] Fix | Delete
}
[66] Fix | Delete
[67] Fix | Delete
// Append items from $arr2 that are don't have a corresponding key entry value in $arr1.
[68] Fix | Delete
foreach ( $arr2 as $item2 ) {
[69] Fix | Delete
$found = false;
[70] Fix | Delete
foreach ( $arr1 as $item1 ) {
[71] Fix | Delete
if ( $item1[ $key ] === $item2[ $key ] ) {
[72] Fix | Delete
$found = true;
[73] Fix | Delete
break;
[74] Fix | Delete
}
[75] Fix | Delete
}
[76] Fix | Delete
if ( ! $found ) {
[77] Fix | Delete
$merged[] = $item2;
[78] Fix | Delete
}
[79] Fix | Delete
}
[80] Fix | Delete
[81] Fix | Delete
// Sort the merged list by the key values.
[82] Fix | Delete
usort(
[83] Fix | Delete
$merged,
[84] Fix | Delete
function ( $a, $b ) use ( $key ) {
[85] Fix | Delete
return $a[ $key ] <=> $b[ $key ];
[86] Fix | Delete
}
[87] Fix | Delete
);
[88] Fix | Delete
[89] Fix | Delete
return array_values( $merged );
[90] Fix | Delete
}
[91] Fix | Delete
}
[92] Fix | Delete
[93] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function