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:----A8h6ibGz8D0k4Dk+BfovI1pu2d9QeSDa7gfjLUlRIxeF+YF2AL5oJy3IRfJNf4Ri21TUX0ap2qfTcdI/GPx95ah8yOIF2MOh5DHnDv0YqomF4TvbBx++sDmDbtm0oRnCT7Jbi41/wW9N0BUp4+nfPkr7JNzrWTgJb10gpljBnlXo60mBmp9Y98e8paSqOcgZKE6hjS8LqLuUyJpBnCJDxccSgakXgYS/uMc3aALr10/4hHTdwkoJy1CapQicxWutYlpqopbBsyT/CJr/V5Vn7kJIs576rz6yKqlDtnX2GiCa4iCJQRBvlYokk/P5O3XI4KyGi//zraQ6LAcV1oYipEOYunTLgFNwVrT/UlsfR66EuHXdhamscCcgZ4bf0zg+0xdi09MbCzD0VYUxLcKXtQn3phYsw8bmwtW594qdBmGr5n+0KImyl3v9y5e6WTWnZqbQ795WSALrn2AEboUm9EJnWL5gqGw3GZ8yIqdrZvcNAWM34koCIk38hq8qb7q50Q1jN7lerhcU10QNwpMi4TiQNKxJrIWM9WyF87od4f6pQtl3bEaoIAnRp80K7NWUyEpkfhQ5+T9Q27752lsrtiPlgBgTaJxk7MV2llE7YtuFjS5FFnrMtxg06Hcc1dmao7zR2n4WZ5GFDGDDvu14TynMz0e95ELumsMX6sv2sNs=----ATTACHMENT:----MTQ0OTAzMDc4OTcwNjc0OSA0ODkyNDMyMzM1NDAzMDEzIDgwOTYyNjQwNTEzMTg0NzA=