php foreach вопрос - PullRequest
       7

php foreach вопрос

0 голосов
/ 06 мая 2010

У меня есть следующий код

$oldID=-1;
$column=0;
foreach($pv->rawData as $data) {
    if ($oldID!= $data->relativeTypeID) {
        $oldID= $data->relativeTypeID;
        $column++;
        $row=1;
    }

    echo "Row: ".$row.": Column: ".$column.": ID".$data->relativeTypeID."<br>"; 

    // if exists a description
    if($data->description) {
        //insert here in the array
        $pv->results[$data->relativeTypeID][$row][0]= $data->relation;
        $pv->results[$data->relativeTypeID][$row][1]= '';
        $pv->results[$data->relativeTypeID][$row][2] ='';
        $pv->results[$data->relativeTypeID][$row][3]  = '';
        $row++;
    }
}

, который генерирует этот вывод:

Строка: 1: Столбец: 1: ID1
Строка: 2: столбец: 1: ID1
Строка: 1: столбец: 2: ID2
Строка: 2: столбец: 2: ID2
Строка: 3: столбец: 2: ID2
Строка: 4: столбец: 2: ID2
Строка: 5: столбец: 2: ID2
Строка: 6: столбец: 2: ID2
Строка: 7: столбец: 2: ID2
Строка: 8: столбец: 2: ID2
Строка: 9: столбец: 2: ID2
Строка: 10: столбец: 2: ID2
Строка: 11: столбец: 2: ID2
Строка: 1: столбец: 3: ID3
Строка: 1: столбец: 4: ID4
Строка: 1: столбец: 5: ID8
Строка: 2: столбец: 5: ID8
Строка: 3: столбец: 5: ID8
Строка: 1: столбец: 6: ID10
Строка: 2: столбец: 6: ID10
Строка: 3: столбец: 6: ID10
Строка: 4: столбец: 6: ID10
...
...

Что я хочу сделать, так это остановиться на верхних 4 столбцах, поэтому я хочу вывод, подобный этому

Строка: 1: Столбец: 1: ID1
Строка: 2: столбец: 1: ID1
Строка: 1: столбец: 2: ID2
Строка: 2: столбец: 2: ID2
Строка: 3: столбец: 2: ID2
Строка: 4: столбец: 2: ID2
Строка: 5: столбец: 2: ID2
Строка: 6: столбец: 2: ID2
Строка: 7: столбец: 2: ID2
Строка: 8: столбец: 2: ID2
Строка: 9: столбец: 2: ID2
Строка: 10: столбец: 2: ID2
Строка: 11: столбец: 2: ID2
Строка: 1: столбец: 3: ID3
Строка: 1: столбец: 4: ID4

Как вы можете видеть, он остановился в столбце 4.

1 Ответ

2 голосов
/ 06 мая 2010

Вы можете сделать это так.

foreach($pv->rawData as $data){
  if ($oldID!= $data->relativeTypeID){
    $oldID= $data->relativeTypeID;
    $column++;
    $row=1;
  }
  if ($column >=4) break; // Exit the foreach loop if column is equal to or bigger than 4
  echo "Row: ".$row.": Column: ".$column.": ID".$data->relativeTypeID."

Я просто параноик с моим состоянием, которое также может быть $ column == 4. Ваш звонок. Ключ заключается в том, чтобы выйти из цикла с помощью оператора break. Проверьте документацию на разрыв здесь , если хотите.

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