2017-04-23 98 views
1

我遇到了一個問題,我不知道如何解決它。PHP,抓取一個數組中的條目來創建一個新數組

這與我以前做過的任何事情都不一樣。

我得到這個數組:

array (
'DayTime_s' => '12:38', 
'MATCHTIMEOUT_f' => '120.000000', 
'MOD0_s' => '746138492', 
'MOD1_s' => '841244723', 
'MOD2_s' => '741155722', 
'MOD3_s' => '748747466', 
'ModId_l' => '0', 
'Networking_i' => '1', 
'NUMOPENPUBCONN' => '40', 
) 

陣列的大小是從一個陣列到下一個不同。 我需要的是一個新的數組,包含上面的所有「MOD?_s」條目(帶值)。但是「mods」的數量因數組而不同。數字總是從0開始遞增1(0,1,2,3,4等)

我該如何處理這個任務?

,肯尼斯

回答

4
$your_array = array (
'DayTime_s' => '12:38', 
'MATCHTIMEOUT_f' => '120.000000', 
'MOD0_s' => '746138492', 
'MOD1_s' => '841244723', 
'MOD2_s' => '741155722', 
'MOD3_s' => '748747466', 
'ModId_l' => '0', 
'Networking_i' => '1', 
'NUMOPENPUBCONN' => '40', 
); 

$new_array = []; 
foreach($your_array as $key => $val) 
    if(preg_match('/MOD\d+_s/ui', $key)) 
     $new_array[$key] = $val; 

print_r($new_array); 
+0

這很快。已經測試過它,它的工作完美無瑕!非常感謝 :) –

0

晚的答案,但你也可以使用array_keys()unset()

foreach(array_keys($the_array) as $key) 
{ 
    if (!preg_match('/MOD\d+/s', $key)) { 
     unset($the_array[$key]); 
    } 
} 

print_r($test_array); 

輸出:

Array 
(
    [MOD0_s] => 746138492 
    [MOD1_s] => 841244723 
    [MOD2_s] => 741155722 
    [MOD3_s] => 748747466 
) 
相關問題