Scenario/Problem Isolation: benim program BİRDEN değişkenler kullanan varsayalım sağlar. Program başında ben daha sonra özel fonksiyonlar sadece farklı birkaç değişken kullanarak sürecinde önce, AT ONCE KÜÇÜK KOD genel fonksiyonu sayesinde değişkenlerin birçok işlemek istiyorum.
Question: Nasıl bir foreach döngü referans birden fazla değişken geçirmek? Veya birden fazla kararlı değişkenler döngü için daha iyi bir alternatif / yöntem var mıdır?
Post(s) related to topic, ama benim sorunu çözmezse:
http://stackoverflow.com/questions/1186274/php-foreach-loop-on-multiple-objects
Background (for those concerned): bu nedenle ben yaklaşık 20 değişken olsun, Getopts http://hash-bang.net/2008/12/missing-php-functions-getopts/ çeşitli argümanları almak için kullandığı bir komut satırı programı var. Ben (yerine işlevini 10 kez çağrı) KEZ at "genel" fonksiyonu reduceHierarchyDots () aracılığıyla dosya yolunu (ler) içeren tüm değişkenleri, (yaklaşık 10) çalıştırmak istiyorum.
<?php
/// 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: ...
?>