как взорвать индекс массива в PHP? - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть массив как

Array
(
    [select_value_2_1] =>  7
)

Я хочу разбить индекс на Array ([0]=select_value, [1]=2, [2]=1)

Ответы [ 5 ]

2 голосов
/ 01 декабря 2011

Используйте array_keys, чтобы получить ключи: http://php.net/manual/en/function.array-keys.php

Или используйте цикл foreach:

foreach($elements as $key => $value){
   print_r (explode("_", $key));
}
1 голос
/ 01 декабря 2011

Если у вас всегда есть точный шаблон, вы можете использовать регулярное выражение для извлечения значений:

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

Производительность этого может быть плохой, потому что у вас есть регулярное выражение и операция с массивом.

1 голос
/ 01 декабря 2011

Или, если вы хотите разделить клавиши, как в вашем примере, используйте более сложную функцию:

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

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

}
1 голос
/ 01 декабря 2011

Вы не можете просто использовать 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 () чтобы извлечь ключи из массива.

0 голосов
/ 01 декабря 2011
<?php
$arr=array("select_value_2_1" => 7);
$keys= array_keys($arr);
$key=$keys[0];
$new_arr=explode("_",$key);
print_r($new_arr);
?>
...