使用字串路徑存取巢狀陣列資料
假設您有一位客戶輸入遵循特定格式的字串,例如「cars . honda.civic = 開」。目標是透過以下方式利用該字串更新巢狀陣列:
$data['cars']['honda']['civic'] = 'On';
首先,使用explode函數對輸入字串進行標記:
$token = explode("=", $input); $value = trim($token[1]); $path = trim($token[0]); $exploded_path = explode(".", $path);
現在,要設定陣列元素而不依賴eval 等不安全方法,請使用引用運算子(&)。 & 運算子提供了變數的引用,讓您可以直接修改其值。
$temp = &$data; foreach ($exploded_path as $key) { $temp = &$temp[$key]; } $temp = $value; unset($temp);
本質上,$temp 充當指向陣列目前層級的指標。此循環迭代字串路徑中指定的元素,逐步建立或檢索必要的陣列。最後,設定值,然後 unset($temp) 刪除對嵌套元素的參考。
以上是如何在 PHP 中使用字串路徑安全地更新嵌套數組資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!