function traverse(RecursiveArrayIterator $iterator) { while ($iterator->valid()) { if ($iterator->hasChildren()) { printf("HasChild: %s\n", $iterator->key()); traverse($iterator->getChildren()); } else { printf("%s => %s\n", $iterator->key(), $iterator->current()); } $iterator->next(); } }
/** * Walks through array * @param $array * @param $callback callable function($path, $value) */ public static function walkArray($array, $callback, $iterator = null, $prefix = '') { if (is_null($iterator)) { $iterator = new \RecursiveArrayIterator($array); } while ($iterator->valid()) { if ($iterator->hasChildren()) { self::walkArray(null, $callback, $iterator->getChildren(), $prefix . '.' . $iterator->key()); } else { call_user_func($callback, ltrim($prefix . '.' . $iterator->key(), '.'), $iterator->current()); } $iterator->next(); } }
/** * @param \RecursiveArrayIterator $iterator * @return mixed * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ protected function buildResources(\RecursiveArrayIterator $iterator) { if (count($this->mapping) == 0) { throw new HttpException(Codes::HTTP_BAD_REQUEST, 'Unable to generate CMMI Data, no mapping is known'); } $this->resource = new Resource(new Link($this->request->getUri(), 'self')); if ($iterator->hasChildren()) { while ($iterator->valid()) { $childItem = $iterator->current(); $this->addResource(new \RecursiveArrayIterator($childItem)); $iterator->next(); } } else { $this->addResource($iterator); } return $this->resource; }
?> " method="POST"> <input type="text" name="any_name"> <input type="submit" name="submit"> </form> <?php if (isset($_POST['submit'])) { $var = $_POST['any_name']; $var = strtoupper($var); $str = file_get_contents('file.json'); $json = json_decode($str, true); $iterator = new RecursiveArrayIterator($json); while ($iterator->valid()) { foreach ($iterator as $key => $value) { if (0 === strpos($key, $var)) { echo $key . ' : ' . $value . "<br/>"; } } $iterator->next(); } } ?> </form> </body> </html>
<input type="text" name="directions"> </div> <input type="submit" name="submit" value="Go!"> </form> <?php $move_data = str_split($directions); //var_dump($move_data); $recusive = new RecursiveArrayIterator($move_data); $reverse = 0; while ($recusive->valid()) { $direction = $recusive->current(); if ($direction == '~') { $reverse++; $recusive->next(); } else { if ($reverse % 2) { if ($direction == '>') { $_x++; } elseif ($direction == '<') { $_x--; } elseif ($direction == 'v') { $_y++; } elseif ($direction == '^') { $_y--; } } else { if ($direction == '>') { $_x--; } elseif ($direction == '<') {
/** * @param RecursiveArrayIterator $iterator */ public function fetchCategoriesWithProducts(RecursiveArrayIterator $iterator) { while ($iterator->valid()) { if ($iterator->hasChildren()) { $this->fetchCategoriesWithProducts($iterator->getChildren()); } else { if ($iterator->key() == 'countProducts' && $iterator->current() != '0') { $this->_categoryWithProducts[$iterator->offsetGet('id')] = array('name' => $iterator->offsetGet('name'), 'full_path' => $iterator->offsetGet('full_path'), 'countProduct' => $iterator->offsetGet('countProducts')); } /*$this->_categoryWithProducts[$iterator->offsetGet('id')] = $iterator->offsetGet('countProducts');*/ } $iterator->next(); } }
function traverse_structure($ids) { $return_ids = array(); $iterator = new RecursiveArrayIterator($ids); while ($iterator->valid()) { if ($iterator->hasChildren()) { $return_ids = array_merge($return_ids, $this->traverse_structure($iterator->getChildren())); } else { if ($iterator->key() == 'int') { $return_ids = array_merge($return_ids, array($iterator->current())); } } $iterator->next(); } return $return_ids; }
public function getColumns($table = NULL) { if ($table === NULL) { throw new \Exception("Please input a table name. - glDbMysql.php - line 89"); } if (!in_array($table, $this->getTables())) { throw new \Exception("The table you're trying to query does not exist - glDbMysql.php - line 91"); } $dbh = $this->getDbh(); $stmt = $dbh->prepare("DESCRIBE " . $table); $success = $stmt->execute(); $columnNames = $stmt->fetchAll(\PDO::FETCH_ASSOC); $iterator = new \RecursiveArrayIterator($columnNames); $fields = array(); if ($success !== FALSE) { while ($iterator->valid()) { if ($iterator->hasChildren()) { $childIterator = new \RecursiveArrayIterator($iterator->current()); while ($childIterator->valid()) { if ($childIterator->key() == "Field") { array_push($fields, $childIterator->current()); } $childIterator->next(); } } $iterator->next(); } return $fields; } $error = array('query' => "DESCRIBE " . $table, 'errorInfo' => $this->prepareErrorInfo($dbh->errorInfo())); $errorInfo = json_encode($error); throw new MysqlException($errorInfo); }
/** * Walks through input array * * @param $array * @param $callback callable function($path, $value) * @param null $iterator * @param string $prefix */ private function walkInputArray($array, $callback, $iterator = null, $prefix = '') { if (!$iterator) { $iterator = new \RecursiveArrayIterator($array); } while ($iterator->valid()) { $key = $iterator->key(); if ($iterator->hasChildren()) { $this->walkInputArray(null, $callback, $iterator->getChildren(), $prefix . '.' . $key); } else { call_user_func($callback, ltrim($prefix . '.' . $key, '.'), $iterator->current()); } $iterator->next(); } }
/** * Helper to `names`, which recursively traverses the iterator appending * new keys onto the base-so-far. * * @param \RecursiveArrayIterator $it * @param string $base * @param array $names */ private function reducer(\RecursiveArrayIterator $it, $base, &$names) { while ($it->valid()) { $sub_base = sprintf('%s[%s]', $base, $it->key()); if ($it->hasChildren()) { $this->reducer($it->getChildren(), $sub_base); } else { $names[] = $sub_base; } $it->next(); } }
public function BuildFeed() { $xml = '<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> '; // build channel title for ($iterator = $this->FeedTitle->getIterator(); $iterator->valid(); $iterator->next()) { $xml .= '<' . $iterator->key() . '>' . $iterator->current() . '</' . $iterator->key() . '>' . "\n"; if ('title' == $iterator->key()) { $xml .= $this->BuildFeedAtom(); } } // build channel items $iterator = new RecursiveArrayIterator($this->FeedItems); while ($iterator->hasChildren()) { $xml .= '<item>' . "\n"; for ($sub_iterator = $iterator->current()->getIterator(); $sub_iterator->valid(); $sub_iterator->next()) { if ('guid' == $sub_iterator->key()) { $xml .= '<' . $sub_iterator->key() . ' isPermaLink ="' . ($sub_iterator->offsetGet('isPermaLink') ? 'true' : 'false') . '">' . $sub_iterator->current() . '</' . $sub_iterator->key() . '>' . "\n"; } elseif ('isPermaLink' != $sub_iterator->key()) { $xml .= '<' . $sub_iterator->key() . '>' . $sub_iterator->current() . '</' . $sub_iterator->key() . '>' . "\n"; } } $xml .= '</item>' . "\n"; $iterator->next(); } $xml .= '</channel> </rss>'; return $xml; }
protected static function encode_iterator(RecursiveArrayIterator $iterator, $options, $depth) { $json = array(); while ($iterator->valid()) { $key = $iterator->key(); $value = $iterator->current(); if ($value instanceof JSExpression) { var_dump($value); $json[$key] = $value->json_encode($options); } else { if ($iterator->hasChildren()) { if (!($depth > 0)) { throw new Exception("Maximum depth reached"); } $json[$key] = static::encode_iterator($iterator->getChildren(), $options, $depth - 1); } else { $json[$key] = static::encode_value($iterator->current(), $options); } } $iterator->next(); } var_dump($json); if (self::is_numeric_array($json)) { return '[' . implode(",", $json) . ']'; } else { foreach (array_keys($json) as $key) { $json[$key] = static::encode_key($key, $options) . ':' . $json[$key]; } return '{' . implode(",", $json) . '}'; } }