我正在嘗試處理表單的提交結果,其中包含一些員工的數據。表單輸入的名稱類似於「employees [1] _firstName」,需要映射到PHP變量$ companydata-> employees [1] - >名字在PHP中使用表單輸入來填充嵌套對象
當填充$ _POST數組時,PHP會看到方括號,並嘗試做一個多維數組,但得到它的錯誤(忽略所有東西后面的左括號)
這複製$ _POST但沒有損壞的數組鍵:請注意,我已經取出了一個foreach循環來簡化問題。
$post_data = explode('&', file_get_contents("php://input"));
// Result: $post_data = array('employees%5B1%5D_firstName=Timothy'
list($key, $value) = explode('=', $post_data[0]);
$key = urldecode($key);
$value = urldecode($value);
// Result: $key = 'employees[1]_firstName', $value = 'Timothy'
但是出問題時,我嘗試使用可變變量:
$post_key_parts = explode('_', $key);
// Result: $post_key_parts = array([0] => 'employees[1]', [1] => 'firstName')
$Companydata->$post_key_parts[0]->$post_key_parts[1] = $value;
// Expected result: Element [0] in array $employees => 'Timothy'
實際的結果是用方括號中的名字「$員工[0]」, 並沒有改變一個變量到$ employees數組。將大括號括在{$ post_key_parts [0]}中並沒有幫助。
我試圖找到一種靈活的解決方案,也將努力爲不同長度的名字如:員工[0] _address_lines [2]或僱員[0] _addresses [1] _postcode
我很高興避免變量變量的罪過,但我想不出用正則表達式或類似的東西來實現它的優雅方式。
我知道變量變量有點怪異,但坦率地說,PHP允許在變量名中使用方括號(和花括號),只要它們是以這種方式創建的。 – Jim