2011-02-28 72 views
0

我有一个PHP数组作为参数,我使用foreach来处理数组。我的问题是,我怎样才能返回一个truefalse通过使用条件,该功能完成了foreach的过程而没有发现任何故障在foreach内的过程的一个步骤?返回使用foreach处理数组的成功或失败

喜欢的东西:

function do_process($array_vars){ 
    foreach($array_vars as $array_var) { 
     //do the process 
    } 

    return (foreach process success) ? true : false; 
} 
+2

'做了彻底的foreach过程吗? 'foreach'对我来说永远不会失败〜 – Shad 2011-02-28 06:25:05

+0

我的意思是当foreach中的某个进程失败时,抱歉我会编辑我的问题 – littlechad 2011-02-28 06:30:35

+1

请不要使用'foreach:'/'endforeach'语法,导致我身体上的痛苦。 – meagar 2011-02-28 06:32:43

回答

4

这取决于你的意思是什么“彻底”。
如出现问题,您可以立即中止:

function foo($array) { 
    foreach ($array as $foo) { 
     if (/* something or other */) { 
      return false; 
     } 
     ... 
    } 
    return true; 
} 

或者您也可以继续通过阵列的其余部分,但请记住,出事了:

function foo($array) { 
    $success = true; 
    foreach ($array as $foo) { 
     if (/* something or other */) { 
      $success = false; 
     } 
     ... 
    } 
    return $success; 
} 
+0

这确保,该数组是完全处理? – 2011-02-28 06:38:11

+0

@Aqeel究竟是什么意思? 'foreach'总是遍历所有数组元素。您可能会失败的任何处理都由您来检测。 – deceze 2011-02-28 06:47:51

2

您可以从一个函数在任何点返回,其中包括来自foreach循环中,当你检测故障:

function do_process($array_vars){ 
    foreach($array_vars as $array_var) { 
    // do the process 
    if (this step of the process failed) 
     return false; 
    } 

    // The foreach loop must have completed successfully 
    return true; 
} 
2

我会做这样的:

function do_process($array_vars){ 
    $success = true; 
    foreach($array_vars as $array_var){ 
     if (some condition appeared){ $success = false; } 
    } 

    return $success; 
} 
-1

你可以这样做。

function process($array_items) { 

    foreach($array_items as $item) { 
     //processing to array goes here...... 
     if($some_bottle_neck or $failure) 
      return false; 
     if($item == end($array_items)) 
      return true; 
    } 
} 

希望这是您的解决方案。

+0

整个'$ thorough_process'变量是无用的,最后只是'return true'。如果函数'返回false',它已经'返回false'。此外,如果数组包含两个相等的值,则会出现错误。 – deceze 2011-02-28 06:50:40

+0

@deceze正确地说, – 2011-02-28 06:54:02