array = $array; } public function pathExists(array $path): bool { return $this->checkPathExists($path, $this->array); } private function checkPathExists(array $path, array $array): bool { // As soon as a step is not found, the path does not exist $step = array_shift($path); if (! array_key_exists($step, $array)) { return false; } // Once the path is empty, we have found all the parts in the path if (empty($path)) { return true; } // If current value is not an array, then we have not found the path $newArray = $array[$step]; if (! is_array($newArray)) { return false; } return $this->checkPathExists($path, $newArray); } /** * @return mixed */ public function getValueInPath(array $path) { $array = $this->array; do { $step = array_shift($path); if (! is_array($array) || ! array_key_exists($step, $array)) { return null; } $array = $array[$step]; } while (! empty($path)); return $array; } }