Cualquier comentario (bueno/malo) o mejora es bienvenido.
Saludos.
Código PHP:
/*** IN mixed (any value),OUT (bool)true/false, CHECK if can be used by foreach ***/
/*** Revisa si puede ser iterado con foreach ***/
function canVarLoop($input) {
return (is_array($input) || $input instanceof Traversable) ? true : false;
}
/*** IN mixed (any value),OUT (string)maxDepth ***/
/*** Retorna la profundidad maxima de un array ***/
function getArrayMaxDepth($input){
if( ! canVarLoop($input) ) { return "0"; }
$arrayiter = new RecursiveArrayIterator($input);
$iteriter = new RecursiveIteratorIterator($arrayiter);
foreach ($iteriter as $value) {
//getDepth() start is 0, I use 0 for not iterable values
$d = $iteriter->getDepth() + 1;
$result[] = "$d";
}
return max( $result );
}
/*** IN mixed (any value), OUT (bool)true/false ***/
/*** Revisa si es array con casting //maybe ¿useless?// Is faster ***/
function isArray($input){
return ( (array)$input === $input ) ? true : false;
}
/*** IN mixed (any value),OUT (bool)true/false, CHECK structure $var[]!='array' ¡¡NOT ACCEPT $var =='string' OR $var[]=='array'!! ***/
/*** Revisa la estructura de array (util cuando recibes un array bien definido) ***/
function isValidFirstLevelArray($input){
if( ! canVarLoop($input) ) { return false; }
foreach($input as $value) {
if( is_array($value) ){ return false; }
}
return true;
}
/*** IN mixed (any value),OUT (bool)true/false, CHECK structure $var[][]!='array' ¡¡NOT ACCEPT $var[]=='string' OR $var[][]=='array'!! ***/
/*** Revisa la estructura de array (util cuando recibes un array bien definido) ***/
function isValidSecondLevelArray($input){
if( ! canVarLoop($input) ) { return false; }
foreach($input as $value) {
if( ! canVarLoop($value) ) { return false; }
foreach($value as $value2) {
if( canVarLoop($value2) ) { return false; }
}
}
return true;
}