大家好,大家好,
我写了一个脚本,它读取一行或多行的字符串。然后将在数组中读取这些行以循环。每行包含一个类和一个在foreach中调用的方法。调用的方法的结果保存在要返回的var中。
我的问题是现在只有最后一次调用才会执行所有其他调用,然后才返回该方法不存在,即使这样,如果我改变行的顺序总是最后一次调用有效。这包括所有方法都在那里并且有效。
行看起来像这样
class_1 /方法1 class_2 /方法2 class_2 /方法1
给定的数组i循环使用foreach看起来像这样
阵列(
[0] => class_1 /方法1 [1] => class_2 /方法2 [2] => class_2 /方法1
现在我的代码会像这样转换新数组中的每个项目
阵列(
[0] => class_1 [1] =>方法1
在其中调用class class_1和method1
我的代码就是这个
public function execute_lines($f){
$cont = ""; // contains the results of all calls
if($l = $this->get_line_array($f)){ // $l contains the array of all lines
foreach($l as $k => $v){
if(strpos($v,"/")){
$a = explode("/",$v); // $a contanis the array with the class and method and may be further data to be used in the methods called
$c = ucfirst($a[0]); // var of the Class
$m = strtolower($a[1]); // var of the methode
unset($a[0],$a[1]); // delete the first two items so that the array contains only further data
if(method_exists($c,$m)){ // see if the method exists
$x = new $c(); // instantiate the Class
$cont .= $x->e($m,$a); // save result
print "-<br />"; // control if the method exits
}else{
print "/<br />"; // control if the method does not exists
}
}
}
}
return $cont; // returns the cont
}
结果将是
“/” “/” 然后只有最后一次调用的内容,其中all to apper
感谢您的帮助
答案 0 :(得分:1)
如果你正在从文件中读取行,那么每行都会附加一个换行符(只有最后一行没有,看起来似乎如此)
更改您的代码并重试
foreach($l as $k => $v){
$v = trim($v); // trim whitespace
if(strpos($v,"/")){
...
}
}