2012-09-28 4 views
1
$arr = array(
    'some ugly string as key' => 'value', 
    'some ugly string as key2' => 'value2', 

); 

내가 아는의 요소의 값을 변경합니다 :어떻게이 함께 할 수있는 연관 배열

$arr['some ugly string as key'] = 'prefix' . $arr['some ugly string as key']

그러나 첫 번째 요소를 선택하는 짧은 방법은 무엇입니까? 키 문자열 내 경우에는 꽤 길기 때문에 ...

먼저 배열을 다시 설정이 작동

답변

3

그때, 배열로서 키 자체를 얻을 사용하는 배열에서 첫 번째 및 마지막 요소를 선택하는 array_keys()를 사용하려는 [0] [길이 -1].

$arr = array(
    'some ugly string as key' => 'value', 
    'some ugly string as key2' => 'value2', 
); 

$keys = array_keys($arr); 

$firstKey = $keys[0]; 
$lastKey = $keys[sizeof($arr) - 1]; 

$arr[$firstKey] = "foo " . $arr[$firstKey]; 
$arr[$lastKey] = $arr[$lastKey] . "bar "; 
+0

+1 이것이 OP가 요청한 것을 달성하는 가장 깨끗하고 가장 일반적인 방법이라고 생각합니다. 그러나, 원하는 동작은 첫 번째 요소 앞에 추가되었고 마지막에 덧붙였다 : 그냥 말하기 :) – Lix

+1

@Lix Only human :) 내 대답을 업데이트했습니다. – Adam

2

(난 그냥 처음에 텍스트를 앞에 추가하고, 마지막 값에 텍스트를 추가 할 필요) 그래서 내부 포인터가 처음에 있고, 현재 포인터가있는 키를 얻은 다음, 그 키에 새로운 값을 할당하십시오.

$array1 = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'); 
reset($array1); 
$first = key($array1); 
$array1[$first] = "New Value"; 
echo $array1['key1']; 

출력은 "새 값"배열 함수의

2

조합이 여기에 당신을 도울 것입니다.

  • array_shift -을 array_pop 하나 개 이상의 요소 배열
  • 시작 앞에 추가를 - - 배열
  • 시작
  • array_unshift있는 원소 시프트 오프 요소 팝 배열 끝
  • array_push - 하나 이상의 요소를 배열 끝으로 밀어 넣습니다.
$arr = array("overflow", "superuser", "server"); 

// prepend first element 
$first = array_shift($arr); 
$first = 'stack'.$first; 
array_unshift($arr,$first); 

// append last element 
$last = array_pop($arr); 
$last .= 'fault'; 
array_push($arr,$last); 

print_r($arr); 

출력 -

Array 
(
    [0] => stackoverflow 
    [1] => superuser 
    [2] => serverfault 
) 

참조 -

+1

이 방법을 사용하면 배열의 키를 알 필요조차 없습니다.이 방법을 사용하면 무엇이든 처음부터 끝까지 조작 할 수 있습니다. –