我需要使用Inflector::slug()
來覆蓋從我的數據庫中獲取的所有結果,當然這些結果都是在數組中檢索的。有沒有可能,或者我需要循環每個結果,並使其凝固?CakePHP:在整個數組中使用Inflector類
謝謝!
我需要使用Inflector::slug()
來覆蓋從我的數據庫中獲取的所有結果,當然這些結果都是在數組中檢索的。有沒有可能,或者我需要循環每個結果,並使其凝固?CakePHP:在整個數組中使用Inflector類
謝謝!
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
班可以做這個更輕的工作。
這不會將數組值轉換爲sluks嗎?如何轉換密鑰的情況? – Piero
也許是變體?像'array_map('Inflector :: slug',array_keys($ your_array))''? –
是的,但是這將返回一個由數字鍵組成的新數組,並且這些值將是初始數組的鍵擊鍵。我認爲最好的方法是循環訪問數組並進行必要的更改。醜陋,但高效。 – Piero