>  기사  >  백엔드 개발  >  PHP에서 배열 객체를 구문 분석하는 방법

PHP에서 배열 객체를 구문 분석하는 방법

PHPz
PHPz원래의
2023-04-24 14:49:541024검색

배열과 객체는 웹 애플리케이션을 개발할 때 가장 일반적으로 사용되는 데이터 구조 중 하나입니다. 스크립팅 언어로서 PHP는 배열과 객체를 처리하는 데 매우 편리합니다. 그러나 다차원 배열, 객체를 포함하는 배열, 배열을 포함하는 객체 등과 같이 복잡한 구조의 데이터를 접할 때 PHP 구문 분석에는 몇 가지 기술과 방법이 필요합니다.

이 기사에서는 PHP가 배열, 객체, 배열의 중첩 객체, 객체의 중첩 배열과 같은 복잡한 구조 데이터를 구문 분석하는 방법을 소개합니다. 몇 가지 예를 통해 구문 분석 과정과 주의 사항을 설명합니다.

  1. 배열 구문 분석

PHP의 배열은 키워드 배열을 사용하거나 [] 기호를 통해 직접 만들 수 있습니다. 간단한 배열의 구문 분석은 매우 간단합니다. 다음과 같이 첨자를 통해 배열의 요소에 직접 액세스할 수 있습니다.

<?php 
$arr = [&#39;apple&#39;, &#39;banana&#39;, &#39;pear&#39;];
echo $arr[0];   //输出apple
echo $arr[1];   //输出banana
echo $arr[2];   //输出pear
?>

그러나 배열이 복잡해지고 다차원 배열이 포함되면 요소에 액세스하는 것이 그리 쉽지 않습니다. 이 시점에서는 순회를 사용하여 배열의 요소를 구문 분석해야 합니다.

<?php 
$arr = [
    &#39;fruit&#39; => [
        'apple' => ['color' => 'red', 'price' => 2],
        'banana' => ['color' => 'yellow', 'price' => 3],
        'pear' => ['color' => 'green', 'price' => 4]
    ]
];

foreach ($arr['fruit'] as $name => $item) {
    echo $name . ':' . $item['color'] . '(' . $item['price'] . '元)<br/>';
}
?>

위 코드에서는 foreach 루프를 사용하여 배열의 요소를 순회하고 배열에 있는 각 과일의 색상과 가격을 얻습니다. 이 순회 방법은 모든 다중 레벨 배열 구조에 적합합니다.

  1. 객체 구문 분석

PHP에서는 class 및 new 키워드를 사용하여 객체를 생성할 수 있습니다. 간단한 개체의 구문 분석은 매우 간단하며 화살표 연산자 ->를 사용하여 개체의 속성이나 메서드에 직접 액세스할 수 있습니다.

<?php 
class Person {
    public $name;
    public $age;
    public function sayHello() {
        echo &#39;Hello, I\&#39;m &#39; . $this->name . '.';
    }
}

$p = new Person();
$p->name = 'Jack';
$p->age = 18;
$p->sayHello(); //输出Hello, I'm Jack.
?>

그러나 객체에 내부 배열이나 여러 객체가 포함되어 있는 경우 요소에 액세스하려면 더 복잡한 순회 방법이 필요합니다.

예를 들어, "문자" 개체를 만듭니다. 각 문자에는 "레이블" 배열과 "친구" 개체가 포함됩니다. 친구 개체에는 "이름"과 "연락처 정보"라는 두 가지 속성이 포함됩니다.

<?php 
class Tag {
    public $name;
    public $value;
}

class Friend {
    public $name;
    public $contact;
}

class Person {
    public $name;
    public $age;
    public $tags = [];
    public $friend;
}

각각 두 개의 태그와 친구가 포함된 두 개의 캐릭터 개체를 만듭니다.

$p1 = new Person();
$p1->name = 'Jack';
$p1->age = 18;
$p1->tags[0] = new Tag();
$p1->tags[0]->name = 'sport';
$p1->tags[0]->value = 5;
$p1->tags[1] = new Tag();
$p1->tags[1]->name = 'music';
$p1->tags[1]->value = 3;
$p1->friend = new Friend();
$p1->friend->name = 'Lucas';
$p1->friend->contact = '123456';

$p2 = new Person();
$p2->name = 'Amy';
$p2->age = 20;
$p2->tags[0] = new Tag();
$p2->tags[0]->name = 'reading';
$p2->tags[0]->value = 3;
$p2->tags[1] = new Tag();
$p2->tags[1]->name = 'travel';
$p2->tags[1]->value = 2;
$p2->friend = new Friend();
$p2->friend->name = 'Lily';
$p2->friend->contact = '654321';

다음으로 각 캐릭터의 모든 정보를 반복하여 페이지에 출력합니다.

<?php 
echo &#39;<table border="1">';
echo '<tr><th>Name</th><th>Age</th><th>Tags</th><th>Friend</th></tr>';

foreach ([$p1, $p2] as $person) {
    echo '<tr>';
    echo '<td>' . $person->name . '</td>';
    echo '<td>' . $person->age . '</td>';
    echo '<td>';
    foreach ($person->tags as $tag) {
        echo $tag->name . ':' . $tag->value . '<br/>';
    }
    echo '</td>';
    echo '<td>' . $person->friend->name . '<br/>' . $person->friend->contact . '</td>';
    echo '</tr>';
}
echo '</table>';
?>

위 코드에서는 두 개의 foreach 루프를 사용합니다. 하나는 문자 배열을 순회하고 다른 하나는 문자 내의 레이블 배열을 순회합니다. 동시에 화살표 연산자 ->를 사용하여 친구 정보를 얻고 출력합니다.

  1. 배열의 객체를 구문 분석합니다

배열을 처리하고 배열의 각 요소가 객체인 경우 순회를 사용하여 배열의 요소를 구문 분석하고 화살표 연산자 ->를 사용해야 합니다. ; 각 객체 내에서 속성을 가져옵니다.

예를 들어, 학생 정보를 저장하는 배열을 만듭니다. 각 학생은 이름, 나이, 직업이라는 세 가지 속성을 갖습니다.

<?php 
class Student {
    public $name;
    public $age;
    public $job;
}

$arr = [
    new Student(),
    new Student(),
    new Student()
];

$arr[0]->name = 'Lucas';
$arr[0]->age = 18;
$arr[0]->job = 'Student';

$arr[1]->name = 'Lily';
$arr[1]->age = 19;
$arr[1]->job = 'Engineer';

$arr[2]->name = 'Jack';
$arr[2]->age = 20;
$arr[2]->job = 'Teacher';
?>

foreach 루프를 사용하여 배열의 각 요소를 순회하고 화살표 연산자 ->를 사용하여 학생의 세 가지 속성을 얻어 출력합니다.

<?php 
foreach ($arr as $item) {
    echo $item->name . '(' . $item->age . ',' . $item->job . ')<br/>';
}
?>
  1. 객체의 배열을 구문 분석합니다

객체를 처리하려고 하는데 객체의 속성이 배열인 경우 순회를 사용하여 배열의 요소를 구문 분석하고 화살표 연산자 ->를 사용해야 합니다. ; 객체 내의 다른 속성을 가져옵니다.

예를 들어, 학생 개체에는 이름, 나이, 직업 및 여러 주소가 있습니다. 주소에는 도, 시, 구, 군, 거리 정보, 기본 주소인지 여부를 나타내는 부울 속성이 포함됩니다.

<?php 
class Address {
    public $province;
    public $city;
    public $district;
    public $street;
    public $isDefault;
}

class Student {
    public $name;
    public $age;
    public $job;
    public $addresses = [];
}

$p = new Student();
$p->name = 'Lucas';
$p->age = 18;
$p->job = 'Student';

$p->addresses[] = new Address();
$p->addresses[0]->province = '江苏省';
$p->addresses[0]->city = '南京市';
$p->addresses[0]->district = '鼓楼区';
$p->addresses[0]->street = '汉口路1号';
$p->addresses[0]->isDefault = true;

$p->addresses[] = new Address();
$p->addresses[1]->province = '江苏省';
$p->addresses[1]->city = '南京市';
$p->addresses[1]->district = '玄武区';
$p->addresses[1]->street = '北京东路1号';
$p->addresses[1]->isDefault = false;
?>

학생 개체 내의 주소 배열을 순회하고 화살표 연산자 ->를 사용하여 학생의 다른 속성을 얻은 다음 페이지에 출력합니다.

<?php 
echo $p->name . '(' . $p->age . ',' . $p->job . ')<br/>';
foreach ($p->addresses as $addr) {
    echo $addr->province . $addr->city . $addr->district . $addr->street;
    echo '默认地址:' . ($addr->isDefault ? '是' : '否') . '<br/>';
}
?>

요약하자면, PHP가 배열, 객체, 배열의 중첩 객체, 객체의 중첩 배열과 같은 복잡한 구조 데이터를 구문 분석할 때 속성을 탐색하고 액세스하여 실제 상황에 따라 다른 방법을 사용해야 합니다. 데이터. 복잡한 데이터를 처리할 때는 데이터의 구조와 사용 시나리오에 따라 적절한 구문 분석 방법을 선택해야 합니다.

위 내용은 PHP에서 배열 객체를 구문 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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