我有一个数据库,我在其中存储变量位置。例如,我有一个线索数组,所以我在数据库中有一个名为 ID 的字段,其位置为 $lead['@attributes' ]['Id']
。这一切都在数据库中设置。
我遇到的问题是从我拥有的数组中检索值。
目前我尝试过的是这样的:
foreach($t AS $lead) {
$newItem = [];
foreach ($this->crm->fields AS $field) {
$newItem[$field->name] = ${$field->location};
}
}
虽然这不起作用。它给我一个错误说:
undefined variable :$lead['@attributes']['Id']
但是,如果我执行 echo $lead['@attributes']['Id']; die();
,它将 ID 放在页面上。我做错了什么?
TLDR;
我需要创建存储在数据库中的动态变量以从数组中获取信息。
Examples
这是我要从中提取的数组:
array(6) {
["@attributes"]=>
array(10) {
["Id"]=>
string(7) "1086984"
["LeadTitle"]=>
string(7) "1086984"
["CreateDate"]=>
string(19) "03/11/2015 02:00:00"
["ModifyDate"]=>
string(19) "04/13/2017 13:02:57"
["ActionCount"]=>
string(2) "13"
["LogCount"]=>
string(2) "13"
["ReminderCount"]=>
string(1) "1"
["ReadOnly"]=>
string(5) "false"
["Flagged"]=>
string(5) "false"
["LastDistributionDate"]=>
string(19) "01/01/0001 00:00:00"
}
}
我的数据库中有以下内容:
ID | Name | Location
1 | ID | $lead['@attributes']['Id']
最后,我得到的数组应该如下所示:
array(10) {
["ID"]=>
string(7) "1086984"
}
编辑 1
我正在通过 cURL 从平台获取 XML 文件。我正在获取该 XML 文件,通过 simplexml_load_string()
、json_encode()
和 json_decode()
运行它,在结束。
然后我还有一个数据库,其中包含一个字段名称列表,以及我从 XML 文件创建的数组中的位置。然后我循环遍历字段数据库,并以更好的解析方式将 XML 文件保存到数据库中。我每 5 分钟对更新的信息执行一次。我不是生成 XML 文件的人,我通常也不会以我必须的方式保存信息。我知道这可能不是最好的方法,但它仅供内部使用,我公司以外的任何人都无法访问我们正在制作的网站。
编辑 2/更新 1
我遇到了另一个障碍。他们有一个名为“字段”的项目,其中包含一个字段数组。
问题是,一切都是它们的“属性”。例如,它们是地址、电子邮件、名字、姓氏等。我将如何遍历它们以获得正确的数据?有什么想法吗?
此问题也存在于其他 3 个对象中。操作和日志,大量日志...
最佳答案
为避免使用 eval(),您可以像这样将数据存储在数据库中:
ID | Name | Location
1 | ID | @attributes.Id
数据库中的数据不需要知道 PHP 变量的名称。
foreach($t AS $lead) {
$newItem = [];
foreach ($this->crm->fields AS $field) {
list($f1, $f2) = explode('.', $field->location);
$newItem[$field->name] = $lead[$f1][$f2];
}
}
关于您的更新:
老实说,我不会使用数据库来编码您的字段映射。我会在您的 PHP 脚本中定义字段映射。
您必须为字段、操作和日志定义特殊情况循环。
我不羡慕你。我做过这样的应用程序,我不得不接受来自另一个部门的数据,这些数据以某种定义不明确的方式格式化。就我而言,我收到了一个 Excel 电子表格,我编写了代码来解析它并从中获取我需要的数据。但是发送电子表格的部门每周都会更改格式,因此我不得不重新编写解析例程。我试着告诉他们,“确定电子表格的格式并每周保持相同。”他们无视我的要求,每次都继续做不同的事情。然后我的契约(Contract)到期了,我离开了,因为我知道他们会在我离开后的一周内终止契约(Contract)。
关于来自数组的 PHP 动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399117/