2011-06-29 43 views

回答

2

PHP的array_map()函數可能會做你所需要的(雖然它假設一個簡單的索引數組)。

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

如果你正在尋找更復雜的東西,CakePHP的Set工具類就可以在一個多步驟的實施是有幫助的。

我還沒有在CakePHP上下文中嘗試過(即通過CakePHP類方法進行映射),但我想不出任何理由,它不會從我的頭頂開始工作。也許它至少會讓你開始。

+0

這不會將數組值轉換爲sluks嗎?如何轉換密鑰的情況? – Piero

+0

也許是變體?像'array_map('Inflector :: slug',array_keys($ your_array))''? –

+0

是的,但是這將返回一個由數字鍵組成的新數組,並且這些值將是初始數組的鍵擊鍵。我認爲最好的方法是循環訪問數組並進行必要的更改。醜陋,但高效。 – Piero

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); 
    } 
}); 

我沒有一段時間,但像羅布·威爾克森說用蛋糕,你可能會發現Set班可以做這個更輕的工作。