Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tukar rentetan php kepada tatasusunan objek tatasusunan objek tatasusunan objek

Tukar rentetan php kepada tatasusunan objek tatasusunan objek tatasusunan objek

王林
王林asal
2023-05-06 10:09:07427semak imbas

Dalam pembangunan PHP, selalunya diperlukan untuk beroperasi pada rentetan, dan menukar rentetan kepada tatasusunan adalah salah satu keperluan biasa. Pada masa yang sama, objek tatasusunan juga merupakan jenis data yang sering digunakan dalam pembangunan. Oleh itu, menukar rentetan PHP kepada tatasusunan objek tatasusunan objek tatasusunan objek tatasusunan telah menjadi salah satu kemahiran yang mesti dikuasai oleh pembangun PHP.

Artikel ini akan memperkenalkan secara terperinci cara menukar rentetan PHP kepada tatasusunan, cara menukar tatasusunan kepada objek, dan akhirnya membentuk tatasusunan objek tatasusunan, dan memperkenalkan cara melaksanakan operasi asas pada tatasusunan objek tatasusunan ini.

  1. String to Array

PHP mempunyai fungsi explode() terbina dalam untuk menukar rentetan kepada tatasusunan. Fungsi explode() membelah rentetan mengikut pembatas yang ditentukan dan mengembalikan tatasusunan yang mengandungi subrentetan berpecah.

Sebagai contoh, kod berikut akan menukar rentetan yang dipisahkan oleh "," kepada tatasusunan:

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

Output:

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

Jika tiada pembatas ditentukan, aksara Ruang adalah digunakan secara lalai.

  1. Array ke objek

Dalam PHP, anda boleh menggunakan taip sintaks penghantaran untuk menukar tatasusunan kepada objek. Proses ini akan menetapkan setiap elemen tatasusunan sebagai atribut objek Nama atribut ialah kunci tatasusunan, dan nilai atribut ialah nilai yang sepadan dengan kunci tatasusunan yang sepadan.

Sebagai contoh, kod berikut akan menukar tatasusunan kepada objek yang sepadan:

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

Perlu diingat bahawa selepas menukar tatasusunan kepada objek, nama atribut dalam objek adalah huruf besar- sensitif daripada.

  1. Objek ke Tatasusunan

Sesuatu objek boleh ditukar menjadi tatasusunan dengan memaksa objek itu menjadi tatasusunan. Proses ini akan menukar semua atribut objek kepada pasangan nilai kunci dalam tatasusunan Nama atribut ialah kunci tatasusunan dan nilai atribut ialah nilai yang sepadan dengan kunci tatasusunan yang sepadan.

Sebagai contoh, kod berikut akan menukar objek kepada tatasusunan yang sepadan:

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);

Output:

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

Perlu diambil perhatian bahawa selepas menukar objek kepada tatasusunan, Nama kunci dalam tatasusunan adalah sama dengan nama harta objek, dan simbol akses harta ($) mendahului nama kunci.

  1. Karang tatasusunan objek tatasusunan

Selepas menukar rentetan kepada tatasusunan, gunakan penukaran jenis paksa untuk menukar tatasusunan kepada objek dan kemudian membentuk tatasusunan objek.

$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);

Output:

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. Operasi pada tatasusunan objek tatasusunan

Selepas mendapat tatasusunan objek tatasusunan, kami boleh melakukan operasi biasa padanya, seperti Tambah, padam, tapis, dsb.

Tambah elemen:

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

Padam elemen:

unset($data_arr[0]);

Elemen penapis:

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

Operasi di atas akan mendapat maklumat orang yang berumur lebih dari 20 tahun .

Melalui pengenalan artikel ini, anda sepatutnya sudah tahu cara menukar rentetan PHP kepada tatasusunan objek tatasusunan objek tatasusunan objek, dan anda boleh melakukan operasi asas padanya. Kemahiran ini sangat berguna dalam pembangunan PHP Saya harap semua orang dapat mempelajarinya dengan serius dan mengaplikasikannya kepada pembangunan sebenar.

Atas ialah kandungan terperinci Tukar rentetan php kepada tatasusunan objek tatasusunan objek tatasusunan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn