2017-09-26 74 views
1

有沒有像array_fill的功能,讓我充滿了相同的字符串(「field_」)的陣列,越來越$變量i這樣的組合:

private function fields() { 
    $result = []; 

    foreach(range(1,44) as $i) { 
     $result[] = "field_$i"; 
    } 

    return $result; 
} 

我知道在PHP中有一堆功能,我很想在一行(如果可能的話)。

+1

數據庫的那些'field_X'列名可能嗎? – Qirel

+0

只要你看到'field_1'' field_2'等,你應該考慮一個數組。 – AbraCadaver

+0

@Qirel是的。 – Basti

回答

1

我發現this,似乎比foreach快3倍,這是迄今爲止我能找到的最短解決方案。

$prefixed_array = preg_filter('/^/', 'prefix_', $array); 
3

你可以使用array_map刪除一個顯式循環的需要,但我不認爲把它放在一個行獲得你多少可讀性方面:

$results = array_map(function ($i) { return "field_{$i}"; }, range(1, 44)); 

=

Array 
(
    [0] => field_1 
    [1] => field_2 
    ... 
+0

你是對的,謝謝你的迴應!我希望能縮短一些東西......就像一個方法調用:array_fill($ i = 1,44,「field_ $ i」);或者如此:) – Basti

+0

我的意思是,你基本上已經在問題中得到了你需要的函數 - 只需將前綴和範圍參數移動到函數參數中,並將其聲明爲array_prefix($ from,$ to,$ prefix)或類似的東西。然後你可以在任何你喜歡的地方使用它作爲'array_prefix(1,44,'field _');' – iainn

0

Php的foreach環實際上允許您訪問當前索引

private function fields() { 
    $result = []; 

    foreach(range(1,44) as $k => $i) { 
     $result[] = "field_$k"; 
    } 

    return $result; 
}