PHP의 정수 인덱스를 사용하여 연결 배열 액세스
키/값 쌍의 배열 인덱스를 사용하여 연관 배열 값을 설정합니다.예를 들어 다음과 같습니다.
$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";
숫자와 연관 인덱스 키 사이에는 상관 관계가 없습니다.
키/값의 배열 인덱스를 사용하여 연관 배열 값을 설정하는 경우 지정된 키를 사용해야 합니다.$array[1]
설정과 동일하지 않다$array['foo']
.
이 어레이를 고려하다
print_r( array('foo', 'foo' => 'bar', 'baz', 'some' => 'value') );
이것으로 알 수 있다
Array
(
[0] => foo
[foo] => bar
[1] => baz
[some] => value
)
foo는 배열의 두 번째 요소입니다.이 값은 오프셋이지만 지수 1과는 관계가 없습니다.보시는 바와 같이 위의 배열에서는 인덱스1은baz
...라고 추측하는 것은 잘못된 것이다.foo
실제 숫자 키 1과 관련된 첫 번째 연관 키입니다.some
는 2와 관련이 없습니다.
마찬가지로, 위와 같이 혼합 어레이의 경우,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']
다만, 그 어레이내의 제2의 관련치에 액세스 하고 싶은 경우('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의 요소는 foo이지만 키는 100입니다.배열에서 요소를 오프셋으로 추출하려면
$third = array_splice($array, 2, 1);
echo $third[0]; // baz
이렇게 하면 세 번째 위치에 요소만 유지하는 배열이 생성됩니다.
아니면,ArrayIterator
.그ArrayIterator
를 실장하다Seekable
어레이의 특정 위치/위치를 검색한 후 다음을 가져올 수 있는 인터페이스입니다.
$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];
?>
는 '2'를 출력합니다.
한쪽이 다른 쪽보다 유리합니까?다만, 어레이 액세스의 수 밖에 알 수 없습니다.
와 함께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 = innode ~~",$my_arr);
my_ar = 브레이크스토어~", $arraybuff);
여기서 "~~~"은 데이터에서 발생하지 않는 구분 기호입니다.
이제 오프셋과 동일한 숫자 인덱스를 사용하여 배열에 액세스할 수 있습니다.
그래도 연관 배열을 유지해야 하는 경우 다른 변수에 할당하기만 하면 됩니다.
언급URL : https://stackoverflow.com/questions/4769148/accessing-an-associative-array-by-integer-index-in-php
'IT' 카테고리의 다른 글
MySQL Get Quarter(QTD) 1, 2, 3, 4 (금년도) (0) | 2023.01.21 |
---|---|
Windows에서 MySQL 또는 MariaDB 서버를 실행하기 위한 최소 파일 - (Portable MySQL/MariaDB) (0) | 2023.01.21 |
Maria를 사용한 스프링 부트에서의 다중 데이터베이스DB (0) | 2023.01.21 |
디렉토리가 존재하지 않는 경우는, 그 디렉토리에 파일을 작성합니다. (0) | 2023.01.21 |
JavaScript 개체 변수에 추가할 동적 키를 만들려면 어떻게 해야 합니까? (0) | 2023.01.21 |