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

发布于 2024-12-18 20:17:00 字数 153 浏览 2 评论 0原文

我有一个数组,就像

Array
(
    [select_value_2_1] =>  7
)

我想将索引分解为 Array ([0]=select_value, [1]=2, [2]=1)

I have an array like

Array
(
    [select_value_2_1] =>  7
)

I want to explode index into Array ([0]=select_value, [1]=2, [2]=1)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

时光匆匆的小流年 2024-12-25 20:17:00

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

或者使用 foreach 循环:

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

Use array_keys to get your keys:
http://php.net/manual/en/function.array-keys.php

Or use a foreach loop:

foreach($elements as $key => $value){
   print_r (explode("_", $key));
}
卖梦商人 2024-12-25 20:17:00

您不能只使用 explode(),因为它还会将 selectvalue 分开。您可以更改输出,以便使用 selectValue_2_1 之类的数组键。

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

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

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

这会产生,例如:

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

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

You can't just use explode() because it will also separate select from value. You could alter your output so that instead you have array keys like selectValue_2_1.

Then you can do what you want:

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

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

That will yield, for example:

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

You can use array_keys() to extract the keys from an array.

宣告ˉ结束 2024-12-25 20:17:00

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

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

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

}

Or if you want to split the keys as in your example, use a more complex function:

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

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

}
拔了角的鹿 2024-12-25 20:17:00

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

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

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

If you always have the exact pattern, you could use a regular expression to extract the values:

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

The performance of this may suck because you have a regular expression and an array operation.

淡淡の花香 2024-12-25 20:17:00
<?php
$arr=array("select_value_2_1" => 7);
$keys= array_keys($arr);
$key=$keys[0];
$new_arr=explode("_",$key);
print_r($new_arr);
?>
<?php
$arr=array("select_value_2_1" => 7);
$keys= array_keys($arr);
$key=$keys[0];
$new_arr=explode("_",$key);
print_r($new_arr);
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文