waUtils

Разные служебные действия

Содержание...

Методы

  • arrayInsertAfter

    Добавляет в ассоциативный массив новые элементы после элемента с указанным ключом.

  • dropNotPositive

    Отфильтровывает из массива значения, не являющиеся положительными числами.

  • extractValuesByKeys

    Возвращает элементы массива с указанными ключами.

  • getFieldValues

    Извлекает значения поля из элементов массива.

  • groupBy

    Группирует подмассивы по значениям указанного поля.

  • jsonDecode

    Обёртка для вызова функции json_decode().

  • jsonEncode

    Обёртка для вызова функции json_encod().

  • orderKeys

    Сортирует элементы ассоциативного массива в указанном порядке.

  • toIntArray

    Возвращает массив значений, приведённых к типу integer.

  • toStrArray

    Возвращает массив значений, приведённых к типу string.

  • varExportToFile

    Сохраняет значение переменной в конфигурационный файл.

public static function arrayInsertAfter (array $array, $key, array $new)

Добавляет в ассоциативный массив новые элементы после элемента с указанным ключом.

Параметры

  • $array

    Исходный ассоциативный массив.

  • $key

    Ключ, после которого нужно добавить новые элементы.

  • $new

    Массив с новыми элементами.

Пример

$array = array(
    'name' => 'value',
    'name2' => 'value2',
    'name3' => 'value3',
    'name4' => 'value4',
);

waUtils::arrayInsertAfter($array, 'name2', array('name5' => 'value5'));

Результат

array(
    'name' => 'value',
    'name2' => 'value2',
    'name5' => 'value5',
    'name3' => 'value3',
    'name4' => 'value4',
);

public static function dropNotPositive ($int_array)

Отфильтровывает из массива значения, не являющиеся положительными числами.

Параметры

  • $int_array

    Исходный массив чисел.

Пример

$array = array(
    -2,
    -1,
    0,
    1,
    2,
);

waUtils::dropNotPositive($array);

Результат

array(
    3 => 1,
    4 => 2,
);

public static function extractValuesByKeys (array $array, $keys = array(), $skip = true, $populate = null)

Возвращает элементы массива с указанными ключами.

Параметры

  • $array

    Исходный ассоциативный массив.

  • $keys

    Массив ключей, соответствующих элементам исходного массива, которые необходимо получить.

  • $skip

    Нужно ли пропускать элементы исходного массива, ключи которых отсутствуют в параметре $keys.

  • $populate

    Значение, на которое нужно заменять значения элементов исходного массива, ключи которых отсутствуют в параметре $keys, при их добавлении в итоговый массив, если в параметре $skip указано false.

Пример

$array = array(
    'apple' => 100,
    'orange' => 200,
    'pineapple' => 300,
    'watermelon' => 400,
);

$keys = array(
    'orange',
    'watermelon',
    'strawberry',
);

waUtils::extractValuesByKeys($array, $keys);

Результат

array(
    'orange' => 200,
    'watermelon' => 400,
);

Пример

$array = array(
    'apple' => 100,
    'orange' => 200,
    'pineapple' => 300,
    'watermelon' => 400,
);

$keys = array(
    'orange',
    'watermelon',
    'strawberry',
);

waUtils::extractValuesByKeys($array, $keys, false, 0);

Результат

array(
    'orange' => 200,
    'watermelon' => 400,
    'strawberry' => 0,
);

public static function getFieldValues (array $array, $field, $index_key = null)

Извлекает значения поля из элементов массива: ассоциативных подмассивов или объектов.

Параметры

  • $array

    Массив значений.

  • $field

    Имя поля/свойства, значения которого нужно получить. Им может быть или один из ключей в подмассивах значений или имя публичного поля в объектах значений.

  • $index_key

    Обозначение ключа записей в массиве результатов. Допустимые обозначения:

    • Один из ключей в подмассивах или объектах исходного массива. Значения записей/свойств с этим ключом будут использоваться в качестве ключей массива результатов.
    • true. Ключами в массиве результатов будут ключи исходного массива.
    • null. Ключи в массиве результатов будут числовыми начиная с 0. В массиве результатов в этом случае будут содержаться только уникальные значения.

Пример

$array = array(
    111 => array(
        'id' => 1,
        'name' => 'one',
    ),
    222 => array(
        'id' => 2,
        'name' => 'two',
    ),
    333 => array(
        'id' => 3,
        'name' => 'three',
    ),
);
waUtils::getFieldValues($array, 'name', 'id');
waUtils::getFieldValues($array, 'name', true);
waUtils::getFieldValues($array, 'name', null);

Результат

//ключ — 'id'
array(
    1 => 'one',
    2 => 'two',
    3 => 'three',
);

//true
array(
    111 => 'one',
    222 => 'two',
    333 => 'three',
);

//null
array(
    0 => 'one',
    1 => 'two',
    2 => 'three',
);

public static function groupBy (array $array, $field, $type = 'collect')

Группирует подмассивы разными способами по значениям указанного поля. В качестве ключей полученного массива используются значения этого поля.

Параметры

  • $array

    Массив, содержащий (обычно ассоциативные) подмассивы, которые нужно сгруппировать.

  • $field

    Имя ключа, по значениям которого нужно группировать подмассивы.

  • $type

    Способ группировки:

    • 'collect': подмассивы исходного массива с одинаковыми значениями поля, указанного в параметре $field, объединяются в виде подмассивов итогового массива; в качестве ключей итогового массива используются значения указанного поля.
    • 'first': в итоговый массив добавляется только первый подмассив из каждой группы подмассивов с одинаковыми значениями указанного поля.
    • 'last': в итоговый массив добавляется только последний подмассив из каждой группы подмассивов с одинаковыми значениями указанного поля.

Пример

$array = array(
    'key1' => array(
        'name' => 'Name 1',
        'value' => 111,
    ),
    'key2' => array(
        'name' => 'Name 1',
        'value' => 222,
    ),
    'key3' => array(
        'name' => 'Name 2',
        'value' => 333,
    ),
    'key4' => array(
        'name' => 'Name 2',
        'value' => 444,
    ),
    'key5' => array(
        'name' => 'Name 3',
        'value' => 555,
    ),
    'key6' => array(
        'name' => 'Name 3',
        'value' => 666,
    ),
);

waUtils::groupBy($array, 'name', 'collect');
waUtils::groupBy($array, 'name', 'first');
waUtils::groupBy($array, 'name', 'last');

Результат

//'collect'
array(
    'Name 1' => array(
        'key1' => array(
            'name' => 'Name 1',
            'value' => 111,
        ),
        'key2' => array(
            'name' => 'Name 1',
            'value' => 222,
        ),
    ),
    'Name 2' => array(
        'key3' => array(
            'name' => 'Name 2',
            'value' => 333,
        ),
        'key4' => array(
            'name' => 'Name 2',
            'value' => 444,
        ),
    ),
    'Name 3' => array(
        'key5' => array(
            'name' => 'Name 3',
            'value' => 555,
        ),
        'key6' => array(
            'name' => 'Name 3',
            'value' => 666,
        ),
    ),
);

//'first'
array(
    'Name 1' => array(
        'name' => 'Name 1',
        'value' => 111,
    ),
    'Name 2' => array(
        'name' => 'Name 2',
        'value' => 333,
    ),
    'Name 3' => array(
        'name' => 'Name 3',
        'value' => 555,
    ),
);

//'last'
array(
    'Name 1' => array(
        'name' => 'Name 1',
        'value' => 222,
    ),
    'Name 2' => array(
        'name' => 'Name 2',
        'value' => 444,
    ),
    'Name 3' => array(
        'name' => 'Name 3',
        'value' => 666,
    ),
);

public static function jsonDecode ($json, $assoc = false, $depth = 512, $options = 0)

Обёртка для вызова функции json_decode(). При неудачном разборе JSON-строки метод генерирует исключение класса waException с сообщением об ошибке.

Параметры

  • $json

    Строка в формате JSON.

  • $assoc

    2-й параметр для функции json_decode(). Значение по умолчанию — false.

  • $depth

    3-й параметр для функции json_decode(). Значение по умолчанию — 512.

  • $options

    4-й параметр для функции json_decode(). Значение по умолчанию — 0.

Пример

$json = '{
    "name": "value",
    "name2": "value2",
    "name3": "value3",
    "name4": "value4"
}';

waUtils::jsonDecode($json, true);

Результат

    array(
        'name' => 'value',
        'name2' => 'value2',
        'name3' => 'value3',
        'name4' => 'value4',
    );

public static function jsonEncode ($value, $options = 0, $depth = 512)

Обёртка для вызова функции json_encode().

Параметры

  • $value

    Значение, которое нужно передать в функцию json_encode.

  • $options

    2-й параметр для вызова функции json_encode(). Если указано значение 0:

    • Если определена константа JSON_UNESCAPED_UNICODE, то её значение добавляется к значению этого параметра.
    • Если включён режим отладки и определена константа JSON_PRETTY_PRINT, то её значение добавляется к значению этого параметра.
  • $depth

    3-й параметр для вызова функции json_encode(). Значение по умолчанию — 512.

Пример

$array = array(
    'name' => 'value',
    'name2' => 'value2',
    'name3' => 'value3',
    'name4' => 'value4',
);

Результат

// включён режим отладки
'{
    "name": "value",
    "name2": "value2",
    "name3": "value3",
    "name4": "value4"
}'

public static function orderKeys (array $array, $order = array())

Сортирует элементы ассоциативного массива в указанном порядке.

Параметры

  • $array

    Ассоциативный массив, элементы которого нужно отсортировать.

  • $order

    Массив или экземпляр класса, реализующего интерфейс Traversable, содержащий ключи в том порядке, в котором нужно отсортировать элементы исходного массива. Если некоторые из указанных ключей отсутствуют в исходном массиве, то они игнорируются. Элементы исходного массива с ключами, отсутствующими в параметре $order, перемещаются в конец полученного массива.

Пример

$array = array(
    'apple' => 100,
    'orange' => 200,
    'pineapple' => 300,
    'watermelon' => 400,
);

$order = array(
    'watermelon',
    'pineapple',
    'strawberry',
);

waUtils::orderKeys($array, $order;

Результат

array(
    'watermelon' => 400,
    'pineapple' => 300,
    'apple' => 100,
    'orange' => 200,
);

public static function toIntArray ($val)

Возвращает массив значений, приведённых к типу integer.

Параметры

  • $val

    Исходное значение. Если указан массив, то метод возвращает массив всех значений исходного массива, приведённых к типу integer. Если указано скалярное значение, то метод возвращает массив с единственным элементом, значением которого является указанное значение, приведённое к типу integer.

Пример

$array = array(
    'foo',
    1,
    '2',
    null,
    array(),
    array(1, 2, 3)
);

waUtils::toIntArray($array)

Пример

array(
    0 => 0,
    1 => 1,
    2 => 2,
    3 => 0,
    4 => 0,
    5 => 0,
);

public static function toStrArray ($val, $trim = true)

Возвращает массив значений, приведённых к типу string.

Параметры

  • $val

    Исходное значение. Если указан массив, то метод возвращает массив всех значений исходного массива, приведённых к типу string. Если указано скалярное значение, то метод возвращает массив с единственным элементом, значением которого является указанное значение, приведённое к типу string.

  • $trim

    Нужно ли удалять пробельные символы в начале и в конце строк.

Пример

$array = array(
    'foo',
    ' bar ',
    null,
    ' 1 ',
);

waUtils::toStrArray($array);

Результат

array(
    0 => 'foo',
    1 => 'bar',
    2 => '',
    3 => '1',
);

Пример

$array = array(
    'foo',
    ' bar ',
    null,
    ' 1 ',
);

waUtils::toStrArray($array, false);

Результат

array(
    0 => 'foo',
    1 => ' bar ',
    2 => '',
    3 => ' 1 ',
);

public static function varExportToFile ($var, $file, $export = true)

Сохраняет значение переменной в конфигурационный файл.

Параметры

  • $var

    Значение переменной.

  • $file

    Путь к файлу, в который нужно сохранить значение переменной.

  • $export

    Флаг, требующий получить текстовое представление значения переменной с использованием PHP-функции var_export(). Обычно это обходимо для сохранения массивов.

Пример

//массив
$array_var = array(
    'id' => 'some',
    'url' => '/test/',
);
$file = wa()->getConfig()->getConfigPath('plugins/test/config_array.php');
waUtils::varExportToFile($var, $file);

//скалярное значение
$scalar_var = 1528117809;
$file = wa()->getConfig()->getConfigPath('plugins/test/config_scalar.php');
waUtils::varExportToFile($scalar_var, $file, false);