我想要得到这样的工作:如何使用递归数组迭代器来处理多维数组?
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迭代器的章节,但它的例子对于我能够实现的目标是无用的。我将如何去实施一个?
编辑:
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'
)
护理时交换LAMBDA提供'var_export'例如数组? – Gordon 2010-09-30 09:50:54
那么,数组可以是任何多维(或基本)数组,这是整个点。所有函数需要做的就是查找那些可能存在也可能不存在于数组中并且格式化它们的值的特定键。问题是让它把它们输出回脚本。 – bcmcfc 2010-09-30 10:03:27
我在问,因为为了写一个例子,我想使用你的实际数据,而不是拿出一个虚拟数组。这只是为了让你的代码不那么繁琐。 – Gordon 2010-09-30 10:06:41