Проблема с функцией foreach в PHP - PullRequest
0 голосов
/ 25 марта 2011
foreach ($arr as $k => $v){

  foreach ($v as $e => $a){
     if($a == 1){break;} 
     //if $e has all 1's not just a single 1 (how to code it ?)
  }

}

как я могу сказать первой foreach функции прерваться, когда $e имеет все 1 's

Очевидно, что это не тот код, который я использую, но он очень похож, мне нужно пройти через двумерный массив и записать ключи ($e), когда их значение ($a) равно 1.

Приведенный выше код заканчивается сразу после первого 1: (

примечание: мой массив не обязательно состоит из цифровых клавиш!

Может быть, есть гораздо лучшие способы решения этой проблемы ... есть идеи?

Большое спасибо!

пример:

Array
(
    ["ny"] => Array
        (
            [col0] => ""
            [col1] => ""
            [col2] => ""
            [col3] => ""
            [col4] => ""
            [col5] => ""
        )

    ["chicago"] => Array
        (
            [col0] => "1"
            [col1] => "1"
            [col2] => "1"
            [col3] => "1"
            [col4] => "1"
            [col5] => "1"
        )
)

Я бы хотел, чтобы это прекратилось сразу после прохождения через Чикаго.

Ответы [ 2 ]

2 голосов
/ 25 марта 2011
foreach ($arr as $k => $v){ 
    if (count(array_diff($v, array(1))) == 0) {
        break;
    }
}
1 голос
/ 25 марта 2011

Я не на 100% уверен в том, что вы хотите, но подойдет ли это вашей проблеме?

$totala = 10;
$numa = 0;
foreach ($arr as $k => $v){
    foreach ($v as $e => $a){
        if($a == 1){
            $numa++;
        }
        if($numa == $totala) {
            break;
        }
    }
}

Таким образом, он сломается, когда количество раз, которое было найдено 1, будет таким же, как и для общего значения. (10 в этом примере.)

...