public static function array_to_viewabledata($array)
{
// Don't transform non-arrays
if (!is_array($array)) {
return $array;
}
// Figure out whether this is indexed or associative
$keys = array_keys($array);
$assoc = $keys != array_keys($keys);
if ($assoc) {
// Treat as viewable data
$data = new ArrayData([]);
foreach ($array as $key => $value) {
$data->setField($key, self::array_to_viewabledata($value));
}
return $data;
} else {
// Treat this as basic non-associative list
$list = new ArrayList();
foreach ($array as $value) {
$list->push(self::array_to_viewabledata($value));
}
return $list;
}
}