PHP,抓取数组中的条目以生成新数组

时间:2017-04-23 00:27:29

标签: 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”的数量因阵列而异。数字总是递增1,从0开始(0,1,2,3,4等)

我该如何处理这项任务?

,肯尼斯

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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
)