PHP foreach以数组键开头

时间:2017-06-18 02:38:01

标签: php

我目前循环遍历数组并将值收集到另一个数组中。

            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,xac

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

我该怎么做?

2 个答案:

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

答案 1 :(得分:0)

没有尝试完全理解你的问题,但也许这就是你正在寻找的东西,试一试&根据您的需要进行修改

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

以下是输出

{{1}}