带数组的变量

Variable variables with arrays

提问人:LukasS 提问时间:1/2/2015 更新时间:1/2/2015 访问量:35

问:

我正在更新软件,将银行对账单的XML文件导入发票软件。 其中一个操作是通过迭代在 xml 文件的结构中查找值(此时文件本身已转换为关联数组)。

我想实现的是在配置文件中设置某种映射供软件的其余部分使用,这将显示在哪里查找该关联数组中的特定数据,例如交易日期、支付的现金金额等。

所以第一个 cfg 映射数组:

    "map"=>array(
        "date"=>"ARRAY['exec-date']",
        "amount"=>"ARRAY['amount']['value']"
    );

然后使用该映射,使用变量变量在这些键值中提供的结构(从 XML 中)获取适当的值:

$amount = ${$map['amount']};

这可能吗?还是我那么累,很容易,我只是被封锁了?

PHP 数组 XML 解析 映射 变量变量

评论

0赞 Sverri M. Olsen 1/2/2015
您是否尝试过更简单的解决方案?
0赞 LukasS 1/2/2015
你心目中更简单吗?
0赞 Sverri M. Olsen 1/2/2015
变量从来都不是做某事的唯一方法,它们通常是一个坏主意。那么,你有没有考虑过以一种更直接、更简单的方式做到这一点?
0赞 LukasS 1/2/2015
简单的方法是将这些路径硬编码到使用此数据的软件的每个部分,然后在银行更改结构时对其进行更新。所以这可能很简单,但更新需要更多时间,而且我必须记住我把所有解析这些该死的 xml 文件的代码放在哪里。所以不,我看不出有什么简单的方法可以做到这一点。

答:

2赞 Barmar 1/2/2015 #1

您可以使用匿名函数:

$map = array(
    "date" => function($x) { return $x['exec-date']; },
    "amount" => function($x) { return $x['amount']['value']; }
);

然后你会做:

$amount = $map['amount']($xml);

评论

0赞 LukasS 1/2/2015
谢谢你,使用 create_function() 我设法实现了这一点。谢谢你:)。