Get Array Values Recursively with PHP
I've been helping to write a WordPress plugin (I'm not ready to share it yet) and one of the tasks required is validating an array of user-selected values against a list of known valid values. The known valid array is actually a key=>value array so unfortunately array_values wont help get the simple list I'd like.
Instead a more advanced custom function was needed:
// http://php.net/manual/en/function.array-values.php
function array_values_recursive($array) {
$flat = array();
foreach($array as $value) {
if (is_array($value)) {
$flat = array_merge($flat, array_values_recursive($value));
}
else {
$flat[] = $value;
}
}
return $flat;
}
This recursive function dives into arrays, even key=>value arrays, to retrieve the final list of values. Thank you PHP.net!
![Responsive Images: The Ultimate Guide]()
Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today's websites and devices become ever more varied, a plethora of responsive images...
![5 Awesome New Mozilla Technologies You’ve Never Heard Of]()
My trip to Mozilla Summit 2013 was incredible. I've spent so much time focusing on my project that I had lost sight of all of the great work Mozillians were putting out. MozSummit provided the perfect reminder of how brilliant my colleagues are and how much...
![HTML5 Input Types Alternative]()
As you may know, HTML5 has introduced several new input types: number, date, color, range, etc. The question is: should you
start using these controls or not? As much as I want to say "Yes", I think they are not yet ready for any real life...
![Basic AJAX Requests Using MooTools 1.2]()
AJAX has become a huge part of the modern web and that wont change in the foreseeable future. MooTools has made AJAX so simple that a rookie developer can get their dynamic pages working in no time.
Step 1: The XHTML
Here we define two links...
No need to create a new array, just use iterators. There is an interface for iterators with values that can be iterators called RecursiveIterator. To wrap a nested array there is RecursiveArrayIterator. And to flatten an RecursiveIterator you can use RecursiveIteratorIterator, which by default only returns the leaves.
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); foreach ($it as $k => $v) { var_dump("$k = $v"); }If you want to convert it to an array use iterator_to_array():
Although if you’re going to call
iterator_to_array()I think you’ve defeated your stated purpose for using iterators.I just love this blog, I always get to know something new. I didn’t know about this. Very useful!
function flatten_array($arg) { return is_array($arg) ? array_reduce($arg, function ($c, $a) { return array_merge($c, flatten_array($a)); },[]) : [$arg]; }