2010-05-06 89 views
0

我有以下代碼PHP的foreach問題

$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列

回答

2

你可以不喜歡這樣。

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語句打破循環。如果您願意,請檢查documentation for break here