Я пытаюсь заставить что-то вроде этого работать:
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;
}
}
}
}
Он будет правильно проходить через массив и форматировать значения, но я не могу его вернуть. Я поиграл с удалением &
из объявления функции и добавлением возврата в конце, но это ничего не даст.
Кроме того, я думаю, что, возможно, использование RecursiveArrayIterator
может быть подходящим вариантом. Однако, несмотря на то, что передо мной стоит книга с главой об итераторах SPL, ее примеры бесполезны для достижения цели, которую я пытаюсь достичь. Как бы я пошел о реализации одного?
Edit:
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' => 'CAPITALIZED@BLERGH.com',
'address' =>
array (
'postcode' => 'ab1 1ba',
'line1' => 'test road',
'line2' => 'testville',
'line3' => 'testshire',
),
'date' => '2010-09-30'
)