Если появится значение foreach, добавьте некоторые данные - PullRequest
1 голос
/ 09 октября 2011

Я получил:

foreach ($query as $sample) {
[..]
}

И мне нужно это изменить, чтобы все значения с

$sample['key'] == 1

собирались зацикливаться на foreach иследующий цикл будет иметь $sample['key'] == 0, затем он добавит, например, что-то вроде:

<tr><td colspan="4">All keys with $sample['key'] == 1 are after the loop, and I'm staring to loop with $sample['key'] == 0</td></tr>

Но только один раз.

// отредактировано

Попытка объяснить больше:

Сначала: foreach зациклит это:

foreach($query as $sample) {
*loop*
print_r($sample['key']) //1
*loop*
print_r($sample['key']) //1
...etc.
}

Но если будет что-то вроде:

foreach($query as $sample) {
*loop*
print_r($sample['key']) //1
*loop*
*adding some content, because next print value is 0!*
print_r($sample['key']) //0!!!!!!!
}

Надеюсь, вы понимаете это сейчас,Я сделал все возможное, чтобы объяснить как можно лучше.Трудно описать, поэтому, если у вас есть вопросы, не стесняйтесь задавать их в комментариях.

1 Ответ

1 голос
/ 09 октября 2011

Я не уверен, что на 100% понимаю вопрос, но это звучит почти как array_filter, может быть чем-то поможет:

function KeyIsEqualToOne($ary){
  return $ary['key'] == 1;
}

function KeyIsEqualToZero($ary){
  return $ary['key'] == 0;
}


// all elements where key==1
$KeysWithOne = array_filter($query, 'KeyIsEqualToOne');

// all elements where key==0
$KeysWithZero = array_filter($query, 'KeyIsEqualToZero');

В противном случае вы всегда можете сохранить переменную состояния, чтобы увидеть, когда было выполнено переключение:

$HasSeenZeroValue = false;
foreach ($query as $sample){
  // ...
  if ($sample['key'] == 0 && !$HasSeenZeroValue){
    echo '<tr><td>...</td></tr>';
    $HasSeenZeroValue = true;
  }
}

Хотя, по общему признанию, я не на 100% понимаю, о чем вы спрашиваете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...