26-10-2011, 08:20 PM
function behead($string) {
$tokens = explode('.', $string);
$head = array_shift($tokens);
return array($head, implode('.', $tokens));
}
function nest_it($flat) {
$nested = array();
$recurse_on = array();
foreach ($flat as $k => $v) {
list($head, $tail) = behead($k);
if ('' == $tail)
$nested[$head] = $v;
else {
$nested[$head][$tail] = $v;
$recurse_on[$head] = true;
}
}
foreach ($recurse_on as $k => $_)
$nested[$k] = nest_it($nested[$k]);
return $nested;
}
print_r(nest_it($flat));
def behead(string)
tokens = string.split('.')
head = tokens.shift
tail = tokens.join('.')
[ head, tail ]
end
def nest(flat_hash)
nested = {}
recurse_on = {}
flat_hash.each do |key, value|
head, tail = behead(key)
if tail.empty?
nested[head] = value
else
nested[head] ||= {}
nested[head][tail] = value
recurse_on[head] = true
end
end
recurse_on.each do |key, value|
nested[key] = nest(nested[key])
end
nested
end
Voilà deux codes qui font la même chose, je ne trouve pas la version php particulièrement écoeurante...
Je pense sincèrement que débuter avec Cake n'est pas plus difficile que commencer avec Rails tellement Cake est une copie du truc. Mettons qu'à force de galérer, l'angle différent que t'a apporté ruby t'as permis de comprendre, mais que tu te serais mangé le même mur en commençant direct avec Rails.
Faut dire que leur tuto est pas mal du tout.