私のデータベースからフェッチされたすべての結果に対してInflector::slug()
を使用する必要があります。それはどういうわけか、または私は各結果をループし、それをslugifyする必要がありますか?CakePHP:配列全体にインフレクタークラスを使用
ありがとうございます!
私のデータベースからフェッチされたすべての結果に対してInflector::slug()
を使用する必要があります。それはどういうわけか、または私は各結果をループし、それをslugifyする必要がありますか?CakePHP:配列全体にインフレクタークラスを使用
ありがとうございます!
PHPのarray_map()
関数は、(単純なインデックス配列を前提としていますが)必要な処理を行う可能性があります。
array_map('Inflector::slug', $your_result)
あなたは、より複雑な何かを探しているなら、CakePHPのSet
ユーティリティクラスは、多段階の実装に役立つかもしれません。
私はこれをCakePHPコンテキスト(つまりCakePHPクラスメソッドを使ったマッピング)で試したことはありませんが、頭の上からうまくいかない理由は考えられません。おそらく、少なくともあなたを始めさせるでしょう。
アレイに応じて、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);
}
});
を、あなたが見つけるかもしれませんSet
クラスがこれを軽量化できることを示しています。
これは配列値をスラッグに変換しませんか?キーの大文字小文字を変換するのはどうですか? – Piero
おそらく異形ですか? 'array_map( 'Inflector :: slug'、array_keys($ your_array))'のようなもの? –
ええ、それは数値キーで構成される新しい配列を返し、値は初期配列のslugifiedキーになります。私はこれを行う最良の方法は、配列をループして変更を行うことだと思います。醜いですが、効率的です。 – Piero