CakePHP:在整个数组上使用Inflector类

时间:2011-06-29 19:03:45

标签: cakephp slug inflector

我需要对从我的数据库中提取的所有结果使用Inflector::slug(),这些结果当然是在数组中检索的。有可能以某种方式,或者我需要循环每个结果并将其搞砸吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

PHP的array_map()函数可能会执行您所需的操作(尽管它假设一个简单的索引数组)。

array_map( 'Inflector::slug', $your_result )

如果您正在查看更复杂的内容,CakePHP的Set实用程序类可能对多步骤实现有所帮助。

我没有在CakePHP上下文中尝试过这个(即通过CakePHP类方法进行映射),但是我想不出任何理由它不会起作用。也许它至少可以让你开始。

答案 1 :(得分:0)

根据数组,您可以使用array_walkarray_walk_recursive

这样的事情应该有效。

这是针对5.3 +;

array_walk_recursive($posts, function(&$value) {
    $value = Inflector::slug($value);
});

如果您想将其限制在某个字段,您还可以执行以下操作:

array_walk_recursive($posts, function(&$value, $key) {
if ($key == 'title') {
    $value = Inflector::slug($value);
  }
});

我有一段时间没有使用Cake,但是像Rob Wilkerson所说的那样,你可能会发现Set类可以做得更轻松。