diff --git a/sources/traits/ObjectArray/ObjectArrayLINQTrait.php b/sources/traits/ObjectArray/ObjectArrayLINQTrait.php
index 616a163..487fa99 100644
--- a/sources/traits/ObjectArray/ObjectArrayLINQTrait.php
+++ b/sources/traits/ObjectArray/ObjectArrayLINQTrait.php
@@ -143,6 +143,22 @@ trait ObjectArrayLINQTrait
* @return array Ассоциированный массив с результатом выборки.
*/
public function GetColumn (string $column, ?callable $wherePredicate = null): array
+ {
+ return $this->GetColumnCallback(fn ($item) => property_exists($item, $column) ? $item->$column : null,
+ $wherePredicate);
+ }
+
+ /**
+ * Получает колонку в массиве данных.
+ *
+ * @param callable $columnPredicate Функция fn (mixed $item): mixed
, возвращающая значение элемента
+ * колонки.
+ * @param callable|null $wherePredicate Условие выборки fn (mixed $item): bool
, которое проверяет,
+ * подходит элемент или нет.
+ *
+ * @return array Ассоциированный массив с результатом выборки.
+ */
+ public function GetColumnCallback (callable $columnPredicate, ?callable $wherePredicate = null): array
{
// Создаю результат
$result = [];
@@ -153,16 +169,12 @@ trait ObjectArrayLINQTrait
if (!is_object($item))
continue;
- // - пропускаю не имеющие требуемого свойства
- if (!property_exists($item, $column))
- continue;
-
// - пропускаю не удовлетворяющие условию
if ($wherePredicate !== null && !$wherePredicate($item))
continue;
// - добавляю значение свойства в результат
- $result[] = $item->$column;
+ $result[] = $columnPredicate($item);
}
// Возвращаю результат
@@ -172,7 +184,7 @@ trait ObjectArrayLINQTrait
/**
* Заменяет данные в строке\ массива.
*
- * @param mixed $setItem Заменяемые элемент.
+ * @param array $setItems Заменяемые элементы.
* @param callable $wherePredicate Условие выборки fn (mixed $item): bool
, которое проверяет,
* подходит элемент или нет.
*