키 / 값 쌍의 배열 인덱스를 사용하여 연관 배열의 값을 설정하고 싶습니다. 예를 들면 :
$my_arr = array( "bling" => "some bling", "bling2" => "lots O bling" );
$my_arr[1] = "not so much bling"; // Would change the value with key bling2.
키 문자열을 사용하지 않고 어떻게이 작업을 수행 할 수 있습니까?
답변
array_keys를 사용하십시오 .
$keys = array_keys($my_arr);
$my_arr[$keys[1]] = "not so much bling";
도움이 되었기를 바랍니다.
답변
숫자 키와 연관 색인 키 사이에는 상관 관계가 없습니다.
key / value의 배열 인덱스를 사용하여 연관 배열의 값 을 설정 하려면 주어진 키를 사용해야하며 설정 $array[1]
은 setting과 동일하지 않습니다 $array['foo']
.
이 배열 고려
print_r( array('foo', 'foo' => 'bar', 'baz', 'some' => 'value') );
이것은 줄 것이다
Array
(
[0] => foo
[foo] => bar
[1] => baz
[some] => value
)
foo는 배열의 두 번째 요소입니다. 이것이 offset 이지만 인덱스 1과는 아무런 관련이 없습니다. 보시다시피 위의 배열에서 인덱스 1은 baz
. foo
첫 번째 연관 키 이기 때문에 실제 숫자 키 1과 관련이 있다고 가정하는 것은 잘못되었습니다 some
.
마찬가지로 위에 표시된 것과 같은 혼합 배열의 array_keys
경우이 사이트의 다른 곳에서 제안 된 솔루션 이 작동하지 않습니다.
print_r( array_keys(array('foo', 'foo' => 'bar', 'baz', 'some' => 'value')) );
줄게
Array
(
[0] => 0
[1] => foo
[2] => 1
[3] => some
)
그래서 당신이 $array[$keys[1]]
할 때 당신 은 정말로하고 $array['foo']
있습니다. 당신이 그 배열 (의 두 번째 연관 값에 액세스하고 싶어하지만 'some'
), 당신은 할 수 없어 $array[$keys[2]]
그로 평가하기 때문 $array[1]
와의 것을 baz
.
요소의 오프셋은 키 또는 값과 완전히 관련이 없습니다.
print_r(
array(
100 => 'foo',
'foo' => 'bar',
50 => 'baz',
'some' => 'value'
)
);
정말 의미
Array
( //key value offset/position
[100] => foo // 0
[foo] => bar // 1
[50] => baz // 2
[some] => value // 3
)
즉, 오프셋 0의 요소는 키가 100이지만 foo입니다. 오프셋으로 배열에서 요소를 추출하려면 다음을 사용해야합니다.
$third = array_splice($array, 2, 1);
echo $third[0]; // baz
이렇게하면 세 번째 위치에 요소 만있는 배열이 생성됩니다.
또는 ArrayIterator
. ArrayIterator
구현하는 Seekable
특정 위치로 탐색 할 수 있습니다 인터페이스는 / 배열의 오프셋 (offset)하고 있음을 가져 오기 :
$iterator = new ArrayIterator($array);
$iterator->seek(3);
echo $iterator->current(); // value
답변
array_keys()
n 번째 키에 대한 액세스를 허용 하는 동안 array_values
n 번째 값을 제공합니다.
<?php
$array = [
0 => 'Zero',
'1' => 'One',
'Two' => 'Two',
];
echo array_values($array)[2];
?>
‘Two’를 출력합니다.
하나의 장점이 다른 것보다 있습니까? 내가 볼 수있는 유일한 사소한 것은 어레이 액세스 수입니다.
array_keys()
당신 과 함께 3.
- 데이터 배열에서 키를 가져옵니다.
- 키 목록에서 n 번째 키를 가져옵니다.
- 데이터 배열에서 n 번째 키를 사용하여 값을 가져옵니다.
와 함께 array_values()
, 당신은 단지 2가 필요합니다.
- 데이터 배열에서 값을 가져옵니다.
- 값 목록에서 n 번째 값을 가져옵니다.
그러나 반면에 키는 일반적으로 더 작고 데이터가 크게 중첩 될 수 있으므로 균형 적으로를 사용하는 array_keys()
것이 더 안전 할 수 있습니다.
답변
어레이는 큰 두 경우 array_keys
및 array_values
그들이 단지 얻기 위하여 원본과 새로운 배열과 동일한 사이즈를 할당하기 때문에 낭비가 될 것이다 n 번째의 키 (또는 값).
array_slice
정수 오프셋을 허용하고 연관 배열에서 작동합니다. 이를 사용 하여 일정한 시간에 n 번째 키 를 가져오고 설정할 수 있습니다 .
// This will at most allocate 2 temporary arrays of 1 element each
$key = array_keys(array_slice($array, $n, 1, true))[0];
$array[$key] = $value;
답변
이 시도. 그것은 당신을 위해 작동합니다.
$result= array_values($my_arr); // Array with indexes you need
답변
또 다른 가능성은 일반 배열로 변환하는 것입니다.
$ arraybuff = implode ( “~~~”, $ my_arr);
$ my_arr = explode ( “~~~”, $ arraybuff);
여기서 “~~~”는 데이터에서 발생하지 않는 구분 기호입니다.
이제 오프셋과 동일한 숫자 인덱스를 사용하여 배열에 액세스 할 수 있습니다.
여전히 연관 배열을 유지해야하는 경우 다른 변수에 할당하기 만하면됩니다.
답변
