我有一個foreach循環,我需要限制到前10個項目,然後突破它。一個循環運行在php的限制次數
我該怎麼做呢?
foreach ($butters->users->user as $user) {
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
}
希望有詳細的解釋。
我有一個foreach循環,我需要限制到前10個項目,然後突破它。一個循環運行在php的限制次數
我該怎麼做呢?
foreach ($butters->users->user as $user) {
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
}
希望有詳細的解釋。
如果你想使用foreach,你可以添加一個額外的變量來控制迭代次數。例如:
$i=0;
foreach ($butters->users->user as $user) {
if($i==10) break;
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
$i++;
}
當你想退出時使用循環計數器和break
。
$i = 0;
foreach ($butters->users->user as $user) {
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
if (++$i >= 10) {
break;
}
}
在第10次迭代中,循環將在最後退出。
這有幾種變化,你需要選擇的一件事是你是否要執行外部循環條件。考慮:
foreach (read_from_db() as $row) {
...
}
如果您退出該循環的頂部,您將讀取11行。如果你在底部退出,它將會是10.在這兩種情況下,循環體執行了10次,但執行這個額外的功能可能是你想要的,或者它可能不是。
打錯了,應該是'($ i ++> 10)' – 2010-01-04 08:32:10
這將在第一次迭代時破壞'foreach'循環。 – Gumbo 2010-01-04 08:32:55
如果您確信稱要保持foreach
循環,添加一個計數器:
$count = 0;
foreach ($butters->users->user as $user) {
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
$count++;
if ($count == 10)
break;
}
所以每個循環執行時,計數器增加,當它到達10 ,循環被打破。
如果可能的話,您也許可以將foreach
循環修改爲for
循環。
您可以將您的foreach塊之前啓動計數器和對證的循環,並打破如果計數器10像這樣,
$count = 1;
foreach ($butters->users->user as $user) {
if($count == 10)
break;
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
$count++;
}
您也可以使用LimitIterator。
例如
$users = new ArrayIterator(range(1, 100)); // 100 test records
foreach(new LimitIterator($users, 0, 10) as $u) {
echo $u, "\n";
}
您可以簡單地遍歷array_slice($butters->users->user, 0, 10)
(前10個元素)。
我真的很喜歡VolkerK的回答,但我不明白他爲什麼在創建新的迭代器時最有可能擁有現有的數組。只是想分享我最終這樣做的方式。
$arrayobject = new ArrayObject($existingArray);
$iterator = $arrayobject->getIterator();
foreach(new LimitIterator($iterator, 0, 10) as $key => $value) {
// do something
}
它應該是如果($ i == 10)而不是= 10。 – 2010-01-04 08:32:01
你在'$ i = 10'中忘了'='。 – Gumbo 2010-01-04 08:32:02
感謝您的糾正。 – Alex 2010-01-04 08:33:27