【问题标题】:PHP -modify value of last accessed element in multidimensional associative arrayPHP - 修改多维关联数组中最后访问元素的值
【发布时间】:2015-06-13 20:14:20
【问题描述】:

我正在读取GEDCOM 格式的家谱平面文件,并从数据中生成一个数组以暂存到表中。如果遇到值CONC <some value>,那么我需要将<some value> 附加到刚刚插入的最后一个元素的值上(无论维度深度如何),而不是添加元素。

我尝试使用current(...) 等,但这是否适用于多维关联数组?

请考虑数组中的以下元素:

[@N163@] => Array ( [INDI] => Array ( [TEXT] => Some data of this person) ) 

如果下一行显示“1 CONC,包括他的职业”

而不是像这样添加一行

[@N163@] => Array (  
                [INDI] => Array ( [TEXT] => Some data of this person)  
                [INDI] => Array ( [CONC] => including his profession) )  

我希望数组如下所示:

[@N163@] => Array ( 
                [INDI] => Array ( [TEXT] => Some data of this person including his profession) )

到目前为止我的研究:

end($theArray) 设置指向最后插入元素的指针,后跟$theArray[key($theArray)] = .... 以更新此元素。

但是我没有让这种方法适用于多维数组和/或它变得非常混乱。

还有:

使用例如合并两个数组+= 符号, 但这似乎只会覆盖一个新元素,如果键相同,则不会影响最后一个元素

还有:

foreach 调用的示例,这对我的情况没有帮助。

希望有人能解释一下……非常感谢!

【问题讨论】:

    标签: php multidimensional-array associative-array


    【解决方案1】:

    添加$array[@N163@][INDI][TEXT] = 'smtng';时可以保存位置

    $pos = &$array[@N163@][INDI][TEXT];
    

    如果你需要连接,写

    $pos .= "concate line";
    

    【讨论】:

    • 太棒了!当然,$pos 是实际的东西,不像 &$pos... 现在会尝试,感谢您的快速回复!
    • 对不起,我输了& :) “快速”的结果 :)
    • 我改变了答案 - 这是最后插入的元素。没有价值
    猜你喜欢
    • 2015-07-05
    • 2018-07-05
    • 2013-01-07
    • 1970-01-01
    • 2013-11-08
    • 2013-09-01
    • 2021-12-27
    • 2013-06-12
    • 2023-03-11
    相关资源
    最近更新 更多