2011-12-01 3 views
0

은 내가 그것도 value에서 select을 분리하기 때문에 당신은 단지 explode()을 사용할 수 없습니다 Array ([0]=select_value, [1]=2, [2]=1)PHP에서 배열 색인을 분해하는 방법은 무엇입니까?

+0

폭발 시키십시오. 뭐가 문제 야? –

+0

@Col. 붕괴 지수를 폭발시키는 방법? 문자열을 폭발시킬 수 있습니다. – maniclorn

+0

@maniclorn 키 (색인)도이 경우의 문자열입니다. – Marcus

답변

1

에 인덱스를 폭발 할

Array 
(
    [select_value_2_1] => 7 
) 

같은 배열을 가지고있다. 대신 출력을 변경하여 selectValue_2_1과 같은 배열 키를 사용할 수 있습니다.

그럼 당신은 당신이 원하는 것을 할 수 있습니다 얻을 것

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

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

을, 예를 들면 : 당신은 배열에서 키를 추출하는 array_keys()을 사용할 수 있습니다

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

. http://php.net/manual/en/function.array-keys.php

을 아니면 foreach 루프를 사용 :

+0

감사합니다. @Daren Chandisingh. selectValue 대신 selectselect_value를 사용해야합니다. – maniclorn

2

사용 array_keys은 열쇠를 얻을 수

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); 
?> 
관련 문제