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

问题描述 投票:0回答:2

我需要对从数据库中获取的所有结果使用

Inflector::slug()
,当然,这些结果是在数组中检索的。是否有可能以某种方式,或者我需要循环每个结果并slugify它?

谢谢!

php cakephp slug inflector
2个回答
2
投票

PHP 的

array_map()
函数可能可以满足您的需要(尽管它假设一个简单的索引数组)。

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

如果您正在寻找更复杂的东西,CakePHP 的

Set
实用程序类可能会对多步骤实现有所帮助。

我还没有在 CakePHP 上下文中尝试过这个(即通过 CakePHP 类方法进行映射),但我想不出有什么理由它不能在我的脑海中发挥作用。也许它至少能让你开始。


0
投票

根据阵列,您可以使用

array_walk
array_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
类可以使这方面的工作变得更轻松。

© www.soinside.com 2019 - 2024. All rights reserved.