如何更改php提取函数中的非法字符


how to change illegal characters in php extract function?

我需要将以下数组中的键值对提取到变量中

$data = array(
    'Quotation.id' => 1,
    'Quotation.project_id' => 2
);
extract($data);

因为.在PHP中是非法字符,所以在运行extract时没有定义额外的变量。

我想以某种方式删除这些点,并将整个字段更改为camelCase。也就是说,在事先不知道$data中的密钥的情况下,我想以某种方式回到新定义的变量:

$quotationId = 1;
$quotationProjectId = 2;

我该如何做到这一点?

请忽略新定义的变量可能与现有变量冲突的情况。假设这种情况不会发生。

使用正则表达式可能有一种更简单的方法,但我会这样做:

foreach ($data AS $k => $v) {
    $key = str_replace(' ', '', ucwords(str_replace('.', ' ', $k)));
    ${$key} = $v;
}

你可以试试这个

<?php
$data = array(
    'Quotation.id' => 1,
    'Quotation.project_id' => 2
);
foreach($data as $key=>$value) {
   $keys = array_map('ucfirst',preg_split( "/('._)/", $key ));
   $newKey = implode($keys);
   unset($data[$key]);
   $data[$newKey] = $value;
}
export($data);
?>