Возвращение успеха или неудачи обработки массива с помощью foreach - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть функция PHP, в которой в качестве параметра используется массив, и я использую foreach для обработки массива.Мой вопрос: как я могу вернуть true или false, используя условие, что функция полностью выполнила процесс foreach, не найдя ни одного из этапов процесса внутри foreach?

Что-то вроде:

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

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

Ответы [ 4 ]

4 голосов
/ 28 февраля 2011

Это зависит от того, что вы подразумеваете под «тщательно».
Вы можете прервать, как только что-то пойдет не так:

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;
}
2 голосов
/ 28 февраля 2011

Я бы сделал это так:

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

    return $success;
}
2 голосов
/ 28 февраля 2011

Вы можете вернуться из функции в любой момент, в том числе из цикла 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;
}
0 голосов
/ 28 февраля 2011

Вы можете сделать это таким образом.

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;
   }
}

Надеюсь, это ваше решение.

...