来自数组的 PHP 动态变量

标签 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;

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

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

我遇到了另一个障碍。他们有一个名为“字段”的项目,其中包含一个字段数组。

fields example

问题是,一切都是它们的“属性”。例如,它们是地址、电子邮件、名字、姓氏等。我将如何遍历它们以获得正确的数据?有什么想法吗?

此问题也存在于其他 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/

相关文章:

c++ - 将数据写入数组时写访问冲突

ios - UISearchDisplayController - 显示来自服务器的搜索结果

php - Zend 服务器体验

mysql - Django 查询集更新迁移

mysql - DECIMAL mysql和存储空间?

mysql - MySQL在mpdf中每行创建一个新的页面宽度

c++ - 如何在 C++ 中访问数组结构内部的数组结构?

php - Laravel Forge 使用守护进程长期运行的 Artisan 命令

PHP Composer 全局配置私有(private)存储库 URL 列表

PHP 和 SQL 无法正常工作