2017-06-18 46 views
1

开头的数组密钥我当前循环访问数组并将值收集到另一个数组中。PHP foreach获得以

  foreach($percentage_array[$scenario_first] as $type => $value) { 

       $first = substr($type,0,$first_letters_count); 

       if(strlen($type)==$sc_type) { 

        if($first==$scenario) { 

         $percentages[] = $value; 
         $scenario_array[$type] = $value; 
        } 
       } 

      } 

而是通过数组循环的,我想与x例如开头的所有键为xaa,XAB,西飞

所以不是我做$percentage_array[$scenario_first][beginning_with_x]

我该怎么做呢?

回答

0

没有试图完全理解你的问题,但也许这是你在找什么,给它一个尝试&根据您的需要

$percentage_array = array(
         'xaa' => 1, 
         'xab' => 1, 
         'xac' => 1, 
         'non' => 1, 
         'sox' => 1); 
$pattern = "/^x(.*)/"; 
$filtered_array = preg_filter($pattern, "$0", array_keys($percentage_array)); 
echo "<pre>"; 
print_r($filtered_array); 

下面做修改输出

Array 
(
    [0] => xaa 
    [1] => xab 
    [2] => xac 
) 
4

编辑:这是更简单:

$filtered_array = array_filter($array, function($key){ 
    return $key{0} == 'x'; 
}, ARRAY_FILTER_USE_KEY); 

,并提供:

array(3) { 
    ["xa"]=> 
    int(1) 
    ["xb"]=> 
    int(2) 
    ["xd"]=> 
    int(4) 
} 

https://3v4l.org/Zri7n


原来的答复:

不太清楚,如果我理解的示例代码,但如果你想删除数组中的所有键/值对根据是否以字母开头,您可以:

$array = [ 
    'xa' => 1, 
    'xb' => 2, 
    'yc' => 3, 
    'xd' => 4, 
]; 

$filtered_keys = array_filter(array_keys($array), function($k){ 
    return !($k{0} == 'x'); 
}); 

foreach ($filtered_keys as $v) { 
    unset($array[$v]); 
} 

https://3v4l.org/6810T