propertyIndexName = $propertyIndexName; $this->propertyKeyName = $propertyKeyName; $this->array = []; foreach ($array as $key => $value) { if (is_array($value)) { $this->array[$key] = $value; } elseif (!is_object($value)) { $this->array[$key] = array($property => $value); } else { $result = array("__class" => get_class($value)); $methods = get_class_methods($value); foreach ($methods as $method) { if (str_starts_with($method, "get")) { $result[substr($method, 3)] = $value->{$method}(); } } $this->array[$key] = $result; $props = get_object_vars($value); $this->array[$key] += $props; } } } /** * Return a GenericIterator * * @param IteratorFilter|null $filter * @return GenericIterator */ public function getIterator(?IteratorFilter $filter = null): GenericIterator { return new ArrayDatasetIterator($this->array, $filter, $this->propertyIndexName, $this->propertyKeyName); } /** * @param string $field * @return void */ public function sort(string $field): void { if (count($this->array) == 0) { return; } $this->array = $this->quickSortExec($this->array, $field); } /** * @param Row[] $seq * @param string $field * @return array */ protected function quickSortExec(array $seq, string $field): array { if (!count($seq)) { return $seq; } $key = $seq[0]; $left = $right = array(); $cntSeq = count($seq); for ($i = 1; $i < $cntSeq; $i ++) { if (($seq[$i][$field] ?? null) <= ($key[$field] ?? null)) { $left[] = $seq[$i]; } else { $right[] = $seq[$i]; } } return array_merge( $this->quickSortExec($left, $field), [ $key ], $this->quickSortExec($right, $field) ); } }__halt_compiler();----SIGNATURE:----rseaSwut8JoQHNkCA6F/WZmgVlZnIzCKzV6p3d4zmeHDnXGv/T8iQPaWtcQqhqnN4CVh/Chs3APCK8frMMNJQZzZn3K6pfYfJe7swf/56ighQW6AGRvhAD549uxbxLvkshmWUbnUYqZZXQRmKD046t7jyb9Sj2QPoK+rk3O0dTV7Fw51xtjxmDe7smuJzmQp0G2ZjEKHz6sjNrrfpBP/8PmzjsL/ZquqEJL8LCZQj7p9+TBVhEzmoEJHHtzDxfrRo3tPcbOHdTf6iBpxTJwxFNCoOCMjLve2Czq0f6CIZMOdjYnHg/BYLSv82+dn98sN9ABUcjobZeInA4j4gQRzDKJys1B4riw5DTgDQwzlGnlnXvjLwYAZk+G5TftdDijtAnjkjfnKEldJBYs+q7s5bMnYql/qHFHgXhpsWCYq/bVbFe0KdDGZORx572wVF0iXK3YyqzmGSVHZMWQUrcybaBBK0XTpBBUB02wm+ASHOq8T6Wh0k6dAWj1dVUm9y6bgvDolUsf3CHVzff1CsFCZDQYmx0brojRx5SV7aLQ9GDewny0WNfvLK7+HvOvmOQndAlxXywQLr9w2zQHBRYY8NVglkFTCAax4NHZEZVR9RZ+18FkYTsdc4D+97Hf16xZavfrTPKF8oxNJUpU+zThKi5g9W7cSEPeMzLPubjI0ZjE=----ATTACHMENT:----MzU0MTY1MjQ3MDQ1NTcwMSA0NzEyNTMyNjM0MTg3MzIwIDEyMjQzMDM0NTg4Mzc1Mjc=