>백엔드 개발 >PHP 문제 >불규칙한 객체를 배열로 변환하는 여러 방법에 대한 간략한 분석

불규칙한 객체를 배열로 변환하는 여러 방법에 대한 간략한 분석

PHPz
PHPz원래의
2023-04-23 10:21:02428검색

PHP에서는 데이터 작업을 용이하게 하기 위해 객체를 배열로 변환해야 하는 경우가 있습니다. 일반적으로 객체의 속성 이름이 배열의 키 값과 동일하면 객체-배열 함수를 직접 사용할 수 있습니다. 예:

$array = (array) $obj; // $obj为对象,$array为数组

그러나 객체 속성 이름이 불규칙한 경우, 예를 들어 , 속성 이름에 밑줄, 하이픈이나 대문자 등이 있습니다. 이때 속성 이름을 수동으로 처리하여 합법적인 배열 키 이름으로 변환해야 합니다. 아래에서는 불규칙한 객체를 배열로 변환하는 몇 가지 방법을 소개합니다.

방법 1: get_object_vars() 함수를 사용하세요.

get_object_vars() 함수를 사용하면 객체의 모든 속성과 속성값을 얻고 연관 배열을 반환할 수 있습니다. 우리는 이 함수를 사용하여 객체 속성 목록을 얻은 다음 이를 처리할 수 있습니다.

$obj = new stdClass();
$obj->user_name = '张三';
$obj->user_age = 20;
$obj->{'user_city-name'} = '北京';

$arr = array();
$vars = get_object_vars($obj);
foreach($vars as $key => $value){
    $arr[str_replace('_', '-', $key)] = $value;
}

var_export($arr);

위 예에서는 get_object_vars() 함수를 사용하여 객체의 모든 속성과 속성 값을 가져온 다음 foreach 루프를 사용하여 순회하고 속성 이름의 밑줄을 하이픈으로 변환합니다. 최종 변환된 배열은 다음과 같습니다.

array (
  'user_name' => '张三',
  'user_age' => 20,
  'user-city-name' => '北京',
)

이 메서드는 객체의 속성만 처리하고 상속된 속성은 포함하지 않습니다.

방법 2: json_encode() 및 json_decode() 함수 사용

또한 json_encode() 및 json_decode() 함수를 사용하여 개체를 JSON 형식으로 변환한 다음 json_decode() 함수를 사용하여 변환할 수도 있습니다. JSON 형식을 다시 배열로 변환합니다.

$obj = new stdClass();
$obj->user_name = '张三';
$obj->user_age = 20;
$obj->{'user_city-name'} = '北京';

$json_str = json_encode($obj);
$arr = json_decode($json_str, true);

foreach($arr as $key => $value){
    $new_key = str_replace('_', '-', $key);
    unset($arr[$key]);
    $arr[$new_key] = $value;
}

var_export($arr);

위의 예에서는 json_encode() 함수를 사용하여 객체를 JSON 형식으로 변환한 다음 json_decode() 함수를 사용하여 JSON 형식을 다시 배열로 변환합니다. 그런 다음 foreach 루프를 사용하여 배열을 순회하고 속성 이름의 밑줄을 하이픈으로 변환합니다. 최종 변환된 배열은 방법 1과 동일합니다.

방법 3: array_map() 함수 사용

array_map() 함수는 배열의 각 요소에 콜백 함수를 적용하고 새 배열을 반환할 수 있습니다. 이 함수를 사용하여 속성 이름의 밑줄을 하이픈으로 변환할 수 있습니다.

$obj = new stdClass();
$obj->user_name = '张三';
$obj->user_age = 20;
$obj->{'user_city-name'} = '北京';

$arr = (array) $obj;
$arr = array_map(function($key){
    return str_replace('_', '-', $key);
}, array_keys($arr));
$arr = array_combine($arr, (array) $obj);

var_export($arr);

위 예에서는 array_map 함수를 사용하여 속성 이름의 밑줄을 하이픈으로 변환하고, array_keys() 함수를 사용하여 객체의 속성 목록을 가져온 다음 array_combine() 함수를 사용하여 변환합니다. 속성 이름과 속성 값을 배열로 변환합니다. 최종 변환된 배열은 방법 1, 방법 2와 동일합니다.

요약:

객체를 배열로 변환해야 하고 불규칙한 속성 이름이 발생할 때 get_object_vars(), json_encode(), array_map() 및 기타 함수를 사용하여 처리할 수 있습니다. 이러한 방법을 통해 불규칙한 객체를 일반 배열로 쉽게 변환하여 데이터 작업을 용이하게 할 수 있습니다.

위 내용은 불규칙한 객체를 배열로 변환하는 여러 방법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.