estoy tratando de conseguir algo como esto de trabajo:¿Cómo uso un iterador de matriz recursivo para procesar una matriz multidimensional?
function posts_formatter (&$posts){
foreach ($posts as $k => $v){
if (is_array($v)){
posts_formatter($v);
}else{
switch (strtolower($k)){
# make email addresses lowercase
case (strpos($k, 'email') !== FALSE):
$posts[$k] = strtolower($v);
break;
# make postcodes uppercase
case (strpos($k, 'postcode') !== FALSE):
$posts[$k] = strtoupper($v);
break;
# capitalize certain things
case (strpos($k, 'line1') !== FALSE):
case (strpos($k, 'line2') !== FALSE):
case (strpos($k, 'line3') !== FALSE):
case (strpos($k, 'forename') !== FALSE):
case (strpos($k, 'surname') !== FALSE):
$posts[$k] = capitalize($v);
break;
}
}
}
}
Se irá correctamente a través de la matriz y dar formato a los valores, pero no puedo conseguirlo para volver ellos. He jugado con eliminar el &
de la declaración de función y agregar una devolución al final, pero no hará nada.
Además, estoy pensando que quizás usar un RecursiveArrayIterator
podría ser el camino a seguir. Sin embargo, a pesar de la presencia de un libro justo frente a mí con un capítulo sobre los iteradores de SPL, sus ejemplos son inútiles para poder lograr lo que intento. ¿Cómo voy a implementar uno?
Editar:
array (
'user' =>
array (
'title' => 'Mr.',
'forename' => 'lowercase',
'surname' => 'name',
'businessName' => 'some dude',
'telephone' => '07545464646',
'postcode' => 'wa1 6nj',
'line1' => 'blergh road',
'line2' => 'randomLY cApitaLIzed wOrds',
'line3' => '',
),
'email' => '[email protected]',
'address' =>
array (
'postcode' => 'ab1 1ba',
'line1' => 'test road',
'line2' => 'testville',
'line3' => 'testshire',
),
'date' => '2010-09-30'
)
cuidado para proporcionar un array 'ejemplo var_export' ? – Gordon
Bueno, la matriz puede ser cualquier matriz multidimensional (o básica), que es el punto completo. Todo lo que la función necesita hacer es buscar esas claves específicas, que pueden existir o no dentro de la matriz y formatear sus valores. La pregunta es conseguir que los devuelva al guión. – bcmcfc
Pregunto porque para escribir un ejemplo, me gustaría utilizar sus datos reales en lugar de crear una matriz ficticia. Es solo para que sea menos tedioso programar las cosas por ti. – Gordon