어레이를 재인덱스화하는 방법
어레이는 다음과 같습니다.
array(
0 => 'val',
2 => 'val',
3 => 'val',
5 => 'val',
7 => 'val'
);
키를 리셋하여 다음과 같이 하려면 어떻게 해야 합니까?0, 1, 2, 3, 4
?
array_values 사용:
$reindexed_array = array_values($old_array);
array_splice($old_array, 0, 0);
어레이를 정렬하지 않고 두 번째 어레이를 생성하지 않습니다.
사용방법sort($array);
여기서 PHP 설명서를 참조하십시오.
추천드립니다sort
에 걸쳐서array_values
두 번째 어레이는 생성되지 않습니다.다음 코드를 사용하면 $reindexed_array와 $old_array의 2개의 어레이가 공간을 차지하게 됩니다.그럴 필요 없어요.
$reindexed_array = array_values($old_array);
PHP7.4부터는 함수 호출 없이 splat 연산자를 사용하여 값을 배열로 압축 해제하여 다시 인덱싱할 수 있습니다.이것을 「리패킹」이라고 생각해 주세요.
코드: (데모)
$array = array(
0 => 'val',
2 => 'val',
3 => 'val',
5 => 'val',
7 => 'val'
);
$array = [...$array];
var_export($array);
출력:
array (
0 => 'val',
1 => 'val',
2 => 'val',
3 => 'val',
4 => 'val',
)
참고: 이 기법은 연관 키에서는 작동하지 않습니다(스플랫 오퍼레이터가 이러한 키를 누름).숫자 이외의 데모
파손은 스트링 키를 풀 수 없는 것으로 보고되고 있습니다만, 키는 모두 수치여야 합니다.문자열 데모 및 플로트 데모의 정수
array_splice($jam_array, 0, count($jam_array));
누락된 중간 인덱스가 있는 배열을 정렬하려면 카운트를 사용하여 순서가 더 안전합니다.그렇게0
첫 번째 인덱스입니다.count($jam_array)
또는sizeof($jam_array)
배열의 소수점 위치(마지막 인덱스)를 반환합니다.
질문의 어레이는 모든 값이 동일하고 키가 이미 오름차순인 매우 특별한 경우임을 지적할 필요가 있습니다.임의의 순서로 다른 값과 키를 가지는 어레이가 있는 경우, 그것을 키별로 정렬해 키를 재인덱스 하는 경우는, 기존의 회답은 예상대로 되지 않습니다.
예를 들어 다음과 같은 것이 있는 경우:
[
7 => 'foo',
0 => 'bar',
2 => 42
];
결국 이렇게 되고 싶겠죠.
[
0 => 'bar',
1 => 42,
2 => 'foo',
]
그냥 쓸 수는 없다array_values()
,array_splice()
또는sort()
왜냐하면 결국엔 당신이
[
0 => 'foo',
1 => 'bar',
2 => 42,
]
대신 먼저 키를 기준으로 어레이를 정렬해야 합니다.ksort()
를 사용하여 키를 다시 인덱싱합니다.array_values()
:
$arr = [
7 => 'foo',
0 => 'bar',
2 => 42
];
ksort($arr, SORT_NUMERIC);
$arr = array_values($arr);
결과:
[
0 => 'bar',
1 => 42,
2 => 'foo',
]
언급URL : https://stackoverflow.com/questions/11224821/how-to-reindex-an-array
'programing' 카테고리의 다른 글
Java 문자열에서 숫자 확인 및 추출 (0) | 2022.10.28 |
---|---|
XAMPP로 루트 암호를 변경한 후 MySQL을 시작할 수 없습니다. (0) | 2022.10.28 |
특정 ID에 적합한 데이터 가져오기 (0) | 2022.10.18 |
Java에서 권장되는 Clone() vs Copy Constructor (0) | 2022.10.18 |
mysql_config가 없는 MariaDB C 커넥터 (0) | 2022.10.18 |