场景/问题隔离

:假设我的程序使用多个变量。在程序开始时,我希望通过一个代码很少的通用函数同时操作许多变量,然后在流程的后面,在特定函数中只使用一些独特的变量。

问题

:如何通过引用foreach循环传递多个变量?或者是否有更好的/可选的方法来循环使用多个确定的变量?

与主题相关的帖子

但没有解决我的问题:

背景(相关人员):

我有一个使用getopts的命令行程序

http://hash-bang.net/2008/12/missing-php-functions-getopts/

为了得到各种各样的参数,我得到了大约20个变量。我想运行所有变量,这些变量包含文件路径(大约10个),一次通过“常规”函数reduceHierarchyDots()(而不是调用函数10次)。

/// The "general" function:

function reduceHierarchyDots ($file) {

while (preg_match('|./\.{2}/|', $file)) { $file = preg_replace('|/([^/]+)/\.{2}/|', '/', $file, 1); }

$file = preg_replace('|(/(\./)+)|', '/', $file);

$file = preg_replace('|^(\./)+|', '', $file);

return $file;

}

function reduceHierarchyDotsRef (&$file) {

while (preg_match('|./\.{2}/|', $file)) { $file = preg_replace('|/([^/]+)/\.{2}/|', '/', $file, 1); }

$file = preg_replace('|(/(\./)+)|', '/', $file);

$file = preg_replace('|^(\./)+|', '', $file);

}

/// The "many" variables:

$x = "something";

$y = 123;

$y = array ("a", "B", 3);

$a = "/Users/jondoe/Desktop/source/0.txt";

$b = "/Users/jondoe/Desktop/source/../1.txt";

$c = "/Users/jondoe/Desktop/source/../../2.txt";

$arrOne = array (

"v1" => "/some/thing/../1.pdf",

"v2" => "/some/thing/../../2.pdf",

"v3" => "/some/thing/../../../3.pdf"

);

$arrTwo = array (

"./1.doc",

"/so.me/.thing/ends./././2.doc",

"./././3.doc"

);

/// At the beginning I want to run multiple determined variables through a "general" function:

/// Debugging: Variables BEFORE the manipulation:

echo("BEFORE:\n"); var_dump($b, $arrOne["v2"], $arrTwo[2]); echo("\n");

/// Method works, but is long! (1 line/statement per function call)

reduceHierarchyDotsRef($b);

reduceHierarchyDotsRef($arrOne["v2"]);

reduceHierarchyDotsRef($arrTwo[2]);

/// Hence, I'd like to pass all variables by reference at once to a foreach loop:

These cause: Parse error: syntax error, unexpected '&':

// foreach ( array($b, $arrOne["v2"], $arrTwo[2] ) as &$file) { $file = reduceHierarchyDots($file); }

// foreach (array(&$b, &$arrOne["v2"], &$arrTwo[2] ) as &$file) { $file = reduceHierarchyDotsRef($file); }

These have no effect on the intended variables:

// foreach (array(&$b, &$arrOne["v2"], &$arrTwo[2] ) as $file) { $file = reduceHierarchyDots($file); }

// foreach (array(&$b, &$arrOne["v2"], &$arrTwo[2] ) as $file) { $file = reduceHierarchyDotsRef($file); }

/// Debugging: Variables AFTER the manipulation:

echo("AFTER:\n"); var_dump($b, $arrOne["v2"], $arrTwo[2]);

/// After the "general" function ran over various variables, the more specific actions happen: ...

?>

循环获取另一个php变量,通过引用将多个变量传递给foreach循环(php)相关推荐

  1. python两层循环 循环完整体一个_Python学习教程(Python学习路线):Python编写循环的两个建议...

    原标题:Python学习教程(Python学习路线):Python编写循环的两个建议 Python学习教程(Python学习路线):给大家总结了两个Python编写循环的建议 循环是一种常用的程序控制 ...

  2. python中的变量的引用_python中的变量引用小结

    python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...

  3. jq循环获取table中各td中input框的内容 ajax传到后台

    页面图: (点击确定后,将各td内容获取到,然后ajax传出,php接收然后传入数据库) 1.先放html的页面代码(用了bookstrap框架): <table class="tab ...

  4. php中的for循环最多循环多少次,php - 我在PHP中有2次时间,如何运行foreach循环来遍历所有这些日子? (最后24小时同时循环1小时!) - 堆栈内存溢出...

    这是此项目可能需要的php文档列表: 以下是示例代码,将在一小时内递减最后24小时: $timenow = time(); for ($i = 0; $i < 24; $i ++) { $ago ...

  5. Jmeter循环获取JDBC查询结果及断言数据库查询结果

    Jmeter连接数据库方法可见此篇文章: Jmeter连接MySQL数据库操作步骤及JDBC各种报错连接失败的原因一.操作步骤1.线程组→配置元件→JDBC Connection Configurat ...

  6. python变量回收_Python变量的引用、拷贝和回收机制

    1.Python中变量的引用 Python中的变量都是指针,都是某个内存对象的引用. python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是"传对象引用" ...

  7. foreach循环详细解析流程

    foreach循环 感觉好的请转发,点赞.谢谢 1.foreach循环具有一个很显著的特点就是索引永远不会溢出. 解决了for,while循环中容易溢出导致程序奔溃的作用. 2.foreach语句是c ...

  8. c#foreach循环用法详解

    foreach 语句经常与数组一起使用,在 C# 语言中提供了 foreach 语句遍历数组中的元素,具体的语法形式 如下. foreach(数据类型 变量名 in 数组名) {//语句块: } C# ...

  9. oracle for循环遍历数组,foreach循环

    Smarty foreach控制循环次数 1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$arra ...

最新文章

  1. 最全面的百度地图JavaScript离线版开发
  2. caffe anaconda3 Python.h: 没有那个文件或目录
  3. 在什么场景下该使用JMX,如何使用,会带来什么好处,这种场景下有哪些替代方案?...
  4. 信息学奥赛C++语言:斗转星移
  5. 库克警告员工不要泄露公司信息:将全力追查
  6. SAP License:成本要素的拉入拉出
  7. 【机器学习】Logistic Regression逻辑回归原理与java实现
  8. C# WinForm 开软件窗口居中 任意时刻窗体居中
  9. 毕设题目:Matlab水果识别分级
  10. cnpack导致view快捷键失灵。
  11. FPGA信号处理系列文章——卷积编码与维特比译码
  12. 1和4互素吗_互素是什么意思?1~10中与10互素的数有多少个
  13. 笔记本电脑怎么关闭触摸板
  14. 计算机无法安装蓝牙驱动,电脑没有蓝牙驱动怎么安装具体方法
  15. MySQL使用HQL语句实现按中文拼音排序
  16. Airtest框架和Poco框架常见问题
  17. 零基础学习软件测试难不难?
  18. UDT的连接建立和释放
  19. 计算机安全模式启动时蓝屏,电脑蓝屏开机按f8进入安全模式后还是蓝屏的,怎么处理?...
  20. 小红书内容传播之品牌推广,干货分析

热门文章

  1. Oracle 19c RAC打补丁过程避坑指南
  2. 需求蔓延,常见但不正常,教你如何破
  3. “元宇宙”究竟是什么
  4. GaussDB(for MySQL) HTAP只读分析特性详解
  5. 如何支撑企业快速构建数字孪生体
  6. 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
  7. 能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步
  8. 【华为云技术分享】【极客思考】设计模式:你确定你真的理解了单例模式吗?
  9. 【直播分享】实现LOL小地图英雄头像分析案例【华为云分享】
  10. #华为云·寻找黑马程序员#【代码重构之路】我是如何将8行代码缩减成1行的