PHP에서 배열 협상은 매우 일반적인 작업입니다. 데이터베이스나 다른 데이터 소스에서 데이터를 가져올 때 일반적으로 연관 배열이나 개체를 얻습니다. 그러나 어떤 경우에는 쉽게 조작하거나 다른 함수로 전달하기 위해 인덱스 배열로 변환해야 합니다. 이 문서에서는 PHP 연관 배열을 인덱스 배열로 캐스팅하는 방법을 설명합니다.
먼저 예시를 살펴보겠습니다. 다음과 같이 데이터베이스에서 일부 사용자 데이터를 가져온다고 가정합니다.
$users = array( array('id' => 1, 'name' => 'John', 'age' => 22), array('id' => 2, 'name' => 'Jane', 'age' => 30), array('id' => 3, 'name' => 'Bob', 'age' => 25), );
이것은 세 개의 사용자 데이터를 포함하는 2차원 연관 배열입니다. 이를 간단한 1차원 인덱스 배열로 변환하려면 array_values()
함수를 사용할 수 있습니다. array_values()
函数。
$users = array_values($users);
这将返回下面的结果:
array( array('id' => 1, 'name' => 'John', 'age' => 22), array('id' => 2, 'name' => 'Jane', 'age' => 30), array('id' => 3, 'name' => 'Bob', 'age' => 25), )
这并没有起到我们想要的效果,因为实际上返回的是相同的二维数组。这是因为 array_values()
函数只能转换一维数组,不能递归地处理多维数组。因此,我们需要使用递归函数来实现这一目标。
下面是一个递归函数,将任意深度的关联数组转换为索引数组:
function array_to_index($arr) { if (!is_array($arr)) { return $arr; } $new_arr = array(); foreach ($arr as $key => $value) { $new_arr[] = array_to_index($value); } return $new_arr; }
这个函数接受一个任意深度的数组作为参数,并返回一个索引数组。
我们可以用这个函数将上面的 $users
$users = array_to_index($users);
array( array('id' => 1, 'name' => 'John', 'age' => 22), array('id' => 2, 'name' => 'Jane', 'age' => 30), array('id' => 3, 'name' => 'Bob', 'age' => 25), )
array_values()
함수가 1차원 배열만 변환할 수 있고 다차원 배열을 재귀적으로 처리할 수 없기 때문입니다. 따라서 이를 달성하려면 재귀 함수를 사용해야 합니다. 다음은 임의 깊이의 연관 배열을 인덱스 배열로 변환하는 재귀 함수입니다.
$user1 = $users[0]; $user2 = $users[1]; $user3 = $users[2]; echo $user1['name']; // 输出 John echo $user2['age']; // 输出 30 echo $user3['id']; // 输出 3
$users
배열을 1차원 인덱스 배열로 변환할 수 있습니다. rrreee
이 결과는 다음과 같습니다. 🎜rrreee🎜이것은 다음과 다르지 않은 것 같습니다. 이전 결과, 그러나 각 요소가 배열이므로 실제로는 1차원 배열입니다. 🎜🎜단일 사용자의 데이터에 액세스하려면 아래 첨자를 사용할 수 있습니다. 🎜rrreee🎜이것은 연관 배열을 인덱스 배열로 변환하는 방법입니다. 배열의 키를 변경하지 않고도 모든 깊이의 배열에서 재귀적으로 사용할 수 있습니다. 🎜🎜물론 이는 단순한 예일 뿐입니다. 실제 개발에서는 다른 유형의 연관 배열(객체 등)을 인덱스 배열로 변환해야 하거나 특정 요구 사항을 충족하기 위해 배열을 추가로 처리해야 할 수도 있습니다. 그러나 이 재귀 함수는 PHP 배열을 더 잘 이해하고 조작하는 데 도움이 되는 편리한 청사진을 제공합니다. 🎜위 내용은 PHP에서 인덱스 배열로 강제 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!