如何在PHP循环中生成增量命名变量并通过循环合并数组
解决PHP循环合并动态命名数组的问题
嗨,其实你有两种思路可以解决这个问题,一种是从根源上简化代码,另一种是针对已经生成的动态变量做循环合并,我给你详细说说:
方案一:直接在循环中收集数据(推荐)
你完全不需要先生成$czy1到$czy8这些单独的变量,咱们可以在遍历XML文件的过程中,直接把所有CDATA内容存入同一个数组,这样就省掉了后续合并的步骤,代码更简洁也更好维护:
<?php $merge = []; // 初始化用来存所有数据的数组 for ($o = 1; $o < 9 ; $o++) { $file = '/patch/to/file_'.$o.'.xml'; $doc = new DOMDocument(); $doc->load($file); $destinations = $doc->getElementsByTagName("model"); foreach ($destinations as $destination) { foreach($destination->childNodes as $child) { if ($child->nodeType == XML_CDATA_SECTION_NODE) { $merge[] = $child->textContent; // 直接把内容添加到统一数组里 } } } } // 现在$merge就是所有XML里CDATA内容的合并结果啦
方案二:循环合并已生成的$czy1到$czy8变量
如果你因为某些原因必须保留这些动态命名的$czyX变量,也可以通过循环动态获取这些变量并合并:
<?php // 先保留你原来生成$czy1到$czy8的代码... $merge = []; for ($o = 1; $o < 9; $o++) { $currentArray = ${'czy' . $o}; // 动态获取当前的$czyX数组 $merge = array_merge($merge, $currentArray); // 逐个合并到$merge中 }
小提示
尽量优先选择方案一哦,因为动态变量(比如${'czy' . $o})的可读性相对差一些,后续维护代码的时候,直接用一个统一的数组会更清晰易懂。
内容的提问来源于stack exchange,提问作者pali112
相关产品推荐
相关产品推荐

