>백엔드 개발 >PHP 문제 >PHP 문자열을 배열 객체 배열 객체 배열 객체 배열로 변환

PHP 문자열을 배열 객체 배열 객체 배열 객체 배열로 변환

王林
王林원래의
2023-05-06 10:09:07465검색

PHP 개발에서는 문자열 작업이 필요한 경우가 많으며 문자열을 배열로 변환하는 것은 일반적인 요구 사항 중 하나입니다. 동시에 배열 객체는 개발에 자주 사용되는 데이터 유형이기도 합니다. 따라서 PHP 문자열을 배열 개체 배열 개체 배열 개체 배열로 변환하는 것은 PHP 개발자가 마스터해야 하는 기술 중 하나가 되었습니다.

이 글에서는 PHP 문자열을 배열로 변환하는 방법, 배열을 객체로 변환하는 방법, 마지막으로 배열 객체의 배열을 형성하는 방법을 자세히 소개하고, 이 배열 객체에 대한 기본 작업을 수행하는 방법을 소개합니다.

  1. 문자열을 배열로

PHP에는 문자열을 배열로 변환하는 폭발() 함수가 내장되어 있습니다. Explode() 함수는 지정된 구분 기호에 따라 문자열을 분할하고 분할된 하위 문자열이 포함된 배열을 반환합니다.

예를 들어 다음 코드는 ","로 구분된 문자열을 배열로 변환합니다.

$str = "apple,banana,orange";
$arr = explode(",", $str);
print_r($arr);

출력:

Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)

구분 기호를 지정하지 않으면 기본적으로 공백 문자가 사용됩니다.

  1. Array to object

PHP에서는 유형 캐스팅 구문을 사용하여 배열을 객체로 변환할 수 있습니다. 이 프로세스에서는 배열의 각 요소를 개체의 속성으로 설정합니다. 속성 이름은 배열 키이고 속성 값은 배열의 해당 키에 해당하는 값입니다.

예를 들어, 다음 코드는 배열을 해당 객체로 변환합니다.

$arr = array('name' => 'Tom', 'age' => 18, 'gender' => 'male');
$obj = (object)$arr;
echo $obj->name; //输出Tom
echo $obj->age; //输出18
echo $obj->gender; //输出male

배열을 객체로 변환한 후에는 객체의 속성 이름이 대소문자를 구분한다는 점에 유의해야 합니다.

  1. 객체를 배열로

객체를 배열로 강제하여 객체를 배열로 변환할 수 있습니다. 이 프로세스는 객체의 모든 속성을 배열의 키-값 쌍으로 변환합니다. 속성 이름은 배열의 키이고 속성 값은 배열의 해당 키에 해당하는 값입니다.

예를 들어 다음 코드는 객체를 해당 배열로 변환합니다.

class Person {
    public $name;
    public $age;
    public $gender;
}

$person = new Person();
$person->name = 'Tom';
$person->age = 18;
$person->gender = 'male';

$arr = (array)$person;
print_r($arr);

출력:

Array
(
    [name] => Tom
    [age] => 18
    [gender] => male
)

객체를 배열로 변환한 후에는 배열의 키 이름이 객체와 동일하다는 점에 유의해야 합니다. 속성 이름, 속성 액세스 기호($)가 키 이름 앞에 옵니다.

  1. 배열 객체의 배열 형성

문자열을 배열로 변환한 후 강제 유형 변환을 사용하여 배열을 객체로 변환한 다음 배열 객체의 배열을 형성합니다.

$str = "name:Tom,age:18,gender:male;name:Lucy,age:21,gender:female;";
$data_arr = explode(";",$str);

function arrayToObject($arr){
    if(gettype($arr) != 'array'){
        return;
    }
    foreach ($arr as $key => $value) {
        if(is_array($value)){
            $arr[$key] = arrayToObject($value);
        }
    }
    return (object) $arr;
}

function objectToArray($obj){
    $obj = (array) $obj;
    foreach ($obj as $k => $v){
        if(gettype($v) == 'resource') return;
        if(gettype($v) == 'object' || gettype($v) == 'array')
            $obj[$k] = (array) objectToArray($v);
    }
    return $obj;
}

$arr = array();
foreach ($data_arr as $data_item) {
    $data_item_arr = explode(",",$data_item);
    $data_obj = new stdClass();
    foreach ($data_item_arr as $item) {
        $item_arr = explode(":",$item);
        if(count($item_arr) == 2){
            $key = $item_arr[0];
            $value = $item_arr[1];
            $data_obj->$key = $value;
        }
    }
    $data_arr[] = $data_obj;
}

$arr_obj = arrayToObject($arr);
print_r($arr_obj);

$arr2 = objectToArray($arr_obj);
print_r($arr2);

출력:

Array
(
    [0] => stdClass Object
        (
            [name] => Tom
            [age] => 18
            [gender] => male
        )

    [1] => stdClass Object
        (
            [name] => Lucy
            [age] => 21
            [gender] => female
        )

)
Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 18
            [gender] => male
        )

    [1] => Array
        (
            [name] => Lucy
            [age] => 21
            [gender] => female
        )

)
  1. 배열 객체 배열에 대한 작업

배열 객체 배열을 가져온 후 추가, 삭제, 필터링 등과 같은 일반적인 작업을 수행할 수 있습니다.

요소 추가:

$data_obj1 = new stdClass();
$data_obj2 = new stdClass();
$data_obj1->name = 'Tom';
$data_obj2->name = 'Lucy';
$data_arr[] = $data_obj1;
$data_arr[] = $data_obj2;

삭제 요소:

unset($data_arr[0]);

필터 요소:

$result_arr = array_filter($data_arr,function ($item){
    return $item->age > 20;
});
print_r($result_arr);

위 작업은 20세 이상의 사람들의 정보를 가져옵니다.

이 기사의 소개를 통해 PHP 문자열을 배열 개체 배열 개체 배열 개체 배열로 변환하는 방법을 이미 알고 있어야 하며 이에 대한 기본 작업을 수행할 수 있습니다. 이 기술은 PHP 개발에 매우 ​​유용합니다. 모두가 진지하게 연구하고 실제 개발에 적용할 수 있기를 바랍니다.

위 내용은 PHP 문자열을 배열 객체 배열 객체 배열 객체 배열로 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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