getData('conferences'))); $teams = $jsonPath ->find('.conferences.*') ->find('..teams.*'); self::assertEquals('Dodger', $teams[0]['name']); self::assertEquals('Mets', $teams[1]['name']); $teams = $jsonPath ->find('.conferences.*') ->find('..teams.*'); self::assertEquals('Dodger', $teams[0]['name']); self::assertEquals('Mets', $teams[1]['name']); $teams = $jsonPath ->find('.conferences..teams.*'); self::assertEquals('Dodger', $teams[0]['name']); self::assertEquals('Mets', $teams[1]['name']); } /** * @throws Exception */ public function testIterating(): void { $data = $this->getData('conferences'); $conferences = (new JSONPath($data)) ->find('.conferences.*'); $names = []; foreach ($conferences as $conference) { $players = $conference ->find('.teams.*.players[?(@.active=yes)]'); foreach ($players as $player) { $names[] = $player->name; } } self::assertEquals(['Joe Face', 'something'], $names); } /** * @throws Exception */ public function testDifferentStylesOfAccess(): void { $data = (new JSONPath($this->getData('conferences', random_int(0, 1)))); self::assertArrayHasKey('conferences', $data); $conferences = $data->__get('conferences')->getData(); if (is_array($conferences[0])) { self::assertEquals('Western Conference', $conferences[0]['name']); } else { self::assertEquals('Western Conference', $conferences[0]->name); } } }