访问平面数组的键并将分隔键字符串解析为数组

问题描述 投票:0回答:5

我有一个像这样的数组

Array
(
    [select_value_2_1] =>  7
)

我想将索引分解为

Array ([0]=select_value, [1]=2, [2]=1)

php arrays key explode text-parsing
5个回答
2
投票

使用

array_keys
获取钥匙: http://php.net/manual/en/function.array-keys.php

或者使用 foreach 循环:

foreach($elements as $key => $value){
   print_r (explode("_", $key));
}

1
投票

您不能只使用

explode()
,因为它也会将
select
value
分开。您可以更改输出,以便使用像
selectValue_2_1
这样的数组键。

然后你就可以做你想做的事了:

$items = array('selectValue_2_1' => 1);

foreach ($items as $key => $value) {
    $parts = explode('_', $key);
}

这将产生,例如:

array('selectValue', '2', '1');

您可以使用 array_keys() 从数组中提取键。


1
投票

或者,如果您想像示例中那样拆分键,请使用更复杂的函数:

foreach ($array as $key=>$value) {

    $key_parts = preg_split('/_(?=\d)/', $key);

}

1
投票

如果您始终拥有精确的模式,则可以使用正则表达式来提取值:

foreach ($array as $key=>$value) {
    if(preg_match('/(select_value)_(\d+)_(\d+)/', $key, $result)) {
          array_shift($result); // remove full match
    }
}

这样做的性能可能会很差,因为你有一个正则表达式一个数组操作。


0
投票
<?php
$arr=array("select_value_2_1" => 7);
$keys= array_keys($arr);
$key=$keys[0];
$new_arr=explode("_",$key);
print_r($new_arr);
?>
© www.soinside.com 2019 - 2024. All rights reserved.