/** * Get or set a JSON key value * * @param string $key_or_dimension The key or JSON dimension, which value will be assigned * @param string $value [optional] If specified, the value to be assigned to this key * @return string */ public function json($key_or_dimension, $value = UNDEFINED) { if ($value == UNDEFINED) { // If target key is single-dimensional if (in_array(preg_match('/^(\\{.+\\})+$/', $key_or_dimension), [false, 0])) { if (isset($this->json_contents[$key_or_dimension])) { return $this->json_contents[$key_or_dimension]; } } else { return \Utils\Arrays::Traverse($this->json_contents, $key_or_dimension); } return UNDEFINED; } }
/** * Should receive values of different datatype within 2 level deeper dimension */ public function testTraverse_Deep2AndDatatypeSensitive() { $result = Arrays::Traverse($this->array, "{address}{coordinates}{latitude}"); $expected = $this->array['address']['coordinates']['latitude']; $this->assertEqual($result, $expected); // must be a float $this->assertIsA($result, 'float'); $result = Arrays::Traverse($this->array, "{address}{coordinates}"); $this->assertIsA($result, 'array'); }