Nếu tôi có một mảng tương ứng với các khóa đệ quy liên tiếp trong một mảng khác, cách tốt nhất để gán giá trị cho "đường dẫn" đó (nếu bạn muốn gọi nó là gì)?Gán một chỉ mục mảng sâu tùy ý?
Ví dụ:
$some_array = array();
$path = array('a','b','c');
set_value($some_array,$path,'some value');
Bây giờ, $some_array
phải bằng
array(
'a' => array(
'b' => array(
'c' => 'some value'
)))
Tại thời điểm này, tôi đang sử dụng như sau:
function set_value(&$dest,$path,$value) {
$addr = "\$dest['" . implode("']['", $path) . "']";
eval("$addr = \$value;");
}
Rõ ràng, đây là một rất ngây thơ tiếp cận và đặt ra một nguy cơ bảo mật, vậy làm thế nào bạn sẽ làm điều đó?
Điều gì xảy ra nếu đường dẫn không hợp lệ? – Matthew
@konforce - Nó sẽ chỉ định anyways, như trong ví dụ trên của tôi khi '$ some_example' bắt đầu trống. –
Tôi đã cập nhật câu trả lời của mình để phản ánh điều đó. Lưu ý nó bây giờ cũng ghi đè các giá trị chuỗi với mảng, nhưng điều đó sẽ đơn giản thay đổi nếu hành vi đó không được mong muốn. – Matthew