2013-05-03 3 views
0

I은 ​​다음과 같습니다 배열을 가지고,의가 있다고 가정 해 봅시다 :배열 키를 관련 값으로 설정하는 더 좋고/우아한 방법이 있습니까?

Array 
(
    [0] => red 
    [1] => green 
    [2] => blue 
) 

내가이 배열의 키가 관련 값과 동일하게합니다. 따라서 결과는 다음과 같아야합니다.

Array 
(
    [red] => red 
    [green] => green 
    [blue] => blue 
) 

초기 배열의 값은 고유하므로이 값은 문제가되지 않습니다.

이 결과를 얻으려면, 내가 일반적으로 foreach 루프를 사용합니다 :

$aResult = array(); 
foreach($aColors as $sValue) 
{ 
    $aResult[$sValue] = $sValue; 
} 

내 질문은 :이 일을 더 나은/우아한 방법이 있나요?

편집 : 많은 사람들이 왜 이런 배열이 필요한지 알고 싶습니다. 그래서 설명 할게. 나는 선택 상자를 생성하는 프레임 워크를 사용하고있다. 이 함수는 배열 키와 값을 사용하여 다음과 같은 선택 옵션에 적용합니다.

<select> 
    <option value="red">red</option> 
    <option value="green">green</option> 
    <option value="blue">blue</option> 
</select> 

이 경우 키는 값과 일치합니다.

+0

내게는 "우아한"느낌이 들지만, 마지막 단계에서는 원하지 않을 수도있는 원래 키를 설정 해제합니다. –

+0

@DavidChen은'$ aResult = array()'선언에 의해 커버되지 않습니까? –

+0

죄송합니다. 감사합니다. –

답변

4
$aResult = array_combine($aColours, $aColours); 

하지만 원래의 배열이 이미 제공하지 않았기 때문에 그렇게하는 것이 무의미합니다.

$aColours = array('red','orange','yellow','green','blue','indigo','violet'); 

$aResult = array_combine(
    $aColours, 
    array_map(
     'ucfirst', 
     $aColours 
    ) 
); 

var_dump($aResult); 

이 키에 대한 초기 배열에 정의 된 소문자 값을 사용하지만, 대한 대문자 첫 글자를 생성

또한 다음을 찾을 수 있습니다

편집에 유용 변형 표시 값

$aColours = array('Red','Orange','Yellow','Green','Blue','Indigo','Violet'); 

$aResult = array_combine(
    array_map(
     'strtolower', 
     $aColours 
    ), 
    $aColours 
); 

var_dump($aResult); 

값의 초기 배열에 대소 문자가 혼합 된 표시 값을 사용하지만 ge 키의 소문자를 대입합니다.

+0

감사합니다. 이것이 제가 찾고 있던 해결책입니다! – Alexxus

2

아니요, 없습니다.

질문은 당신이 그것을 원했던 이유로 남아 있지만, 이것을 수행하는 방법입니다.

+1

[ "key"]의 가치를 지니고 있다면 키의 가치는 쓸모 없습니까? –

+0

아마 일부 번역 테이블입니다. –

+0

@DavidChen 내 질문을 편집하고 왜이 배열을 필요로하는지 설명했습니다 – Alexxus

관련 문제