2011-12-01 62 views
0

我有這樣如何在PHP中爆炸一個數組的索引?

Array 
(
    [select_value_2_1] => 7 
) 

我想爆炸指數爲Array ([0]=select_value, [1]=2, [2]=1)

+0

爆炸它。有什麼問題? –

+0

@Col。彈片如何爆炸索引?一串可以爆炸。 – maniclorn

+0

@maniclorn在這種情況下,鍵(索引)也是一個字符串 – Marcus

回答

1

你不能只用explode(),因爲它也將value分離select的數組。你可以改變你的輸出,而不是你有像selectValue_2_1這樣的數組鍵。

然後,你可以做你想做的:

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

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

,將產生,例如:

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

您可以使用array_keys()從陣列中提取的關鍵。

+0

謝謝@達仁昌迪辛。我應該使用selectValue而不是select_value。 – maniclorn

2

使用array_keys讓你的鑰匙: http://php.net/manual/en/function.array-keys.php

或者使用foreach循環:

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

這也會撕裂'select_value'。 –

+0

@TillHelgeHelwig但在這種情況下的問題是如何獲得作爲一個字符串的關鍵,使OP可以使用它的標準操作 – Marcus

+0

然後,他會創建另一個問題,並要求如何以他想要的方式獲得數組。 ;) –

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); 
?>