来自数组的PHP动态变量

时间:2017-04-13 18:14:52

标签: php mysql arrays variables dynamic

我有一个数据库,我正在存储变量位置。例如,我有一个引导数组,所以我在数据库中有一个名为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;

我需要创建存储在数据库中的动态变量,以从数组中获取信息。

  

实施例

这是我想要的数据:

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

我进入另一个ROADBLOCK。他们有一个名为" fields"的项目,其中包含一系列字段。

fields example

问题是,一切都是"属性"在他们。例如,它们是地址,电子邮件,名字,姓氏等。我将如何循环以获取正确的数据?有什么想法吗?

此问题也存在于其他3个对象中。动作和日志,大量日志......

1 个答案:

答案 0 :(得分:1)

为避免使用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电子表格,我编写了代码来解析它并从中获取我需要的数据。但是发送电子表格的部门每周都会更改格式,因此我不得不重新编写解析例程。我试着告诉他们,“决定电子表格的格式并保持每周一样。”他们忽略了我的要求,并且每次都继续不同。然后我的合同到了,我离开了,知道他们会在我离开后一周打破它。