首頁 > 後端開發 > PHP問題 > php字串轉成數組物件數組物件數組物件數組

php字串轉成數組物件數組物件數組物件數組

王林
發布: 2023-05-06 10:09:07
原創
465 人瀏覽過

在PHP開發中,經常需要對字串進行操作,而將字串轉換成陣列是其中常見的需求。同時,數組物件也是在開發中經常使用到的資料類型。因此,將PHP字串轉換成陣列物件陣列物件數組物件數組,成為PHP開發人員必須掌握的技能之一。

本文將詳細介紹如何將PHP字串轉換成數組,以及如何將數組轉換成對象,最終組成數組對象數組,並介紹如何對此數組對象數組進行基本的操作。

  1. 字串轉數組

PHP內建了explode()函數來實現將字串轉換成陣列的運算。 explode()函數將字串依照指定的分隔符號分割,並傳回一個含有分割後的子字串的陣列。

例如,下面的程式碼將會以「,」分隔的字串轉換成了一個陣列:

$str = "apple,banana,orange";
$arr = explode(",", $str);
print_r($arr);
登入後複製

輸出:

Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)
登入後複製

如果沒有指定分隔符,則預設使用空格字元。

  1. 陣列轉物件

在PHP中,可以使用type casting語法將陣列轉換成物件。這個過程會把數組的每個元素當作物件的一個屬性來設置,屬性名為數組鍵,屬性值為數組對應鍵所對應的值。

例如下面的程式碼將會將一個陣列轉換成對應的物件:

$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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板