的Python提供了... ELSE結構是這樣的:For ... else循環/ PHP中的流量控制?
for value in i:
print value
else:
print 'i is empty'
什麼是最接近的這個在PHP?
編輯:請參閱下面的@Evpok評論 - for ... else實際上並不像打印語句所示的那樣工作。我的錯誤 - 對不起!
的Python提供了... ELSE結構是這樣的:For ... else循環/ PHP中的流量控制?
for value in i:
print value
else:
print 'i is empty'
什麼是最接近的這個在PHP?
編輯:請參閱下面的@Evpok評論 - for ... else實際上並不像打印語句所示的那樣工作。我的錯誤 - 對不起!
if (count($i) > 0) {
foreach ($i as $x) { ... }
} else {
echo 'i is empty';
}
假設i
是一個數組。
if (!empty($array)){
foreach ($array as $val)
echo $val;
}
else
echo "array is empty";
要佔全部traversables,包括那些無數的,正確的做法是:
$iterated = false;
foreach ($traversable as $value) {
$iterated = true;
echo $value;
}
if (!$iterated) {
echo 'traversable is empty';
}
如果你正在編寫通用代碼,這是要走的路。如果你知道你會得到一個可以遍歷的數字,那麼count
方法顯然更好閱讀。
做詳細的實施爲蟒蛇手冊上說是這樣的:
$count = count($my_array);
$cntr = 0;
foreach($my_array as $my_value)
{
$cntr++;
// do the loop work
}
if($cntr == $count)
{
// all elements treated, do the 'python-else' part.
}
工作太多了。不必要的.. – totten
@totten這裏的哲學是,最好清楚你在做什麼。因爲閱讀代碼的人會變得更加清楚。 –
我知道這不回答你的具體的例子,但我已經使用goto作爲一種解決方法另一個用於 - >其他Python來PHP的問題:
foreach(range(2,100) as $n){
for($x = 2; $x < $n; $x++){
if($n % $x==0){
print $n . ' equals ' . $x . ' * ' . $n/$x . '<br>';
goto end;
}
}
echo $n . ' is a prime number.<br>';
end:
}
也許這是一個更實際的答案。
不會休息一下完成同樣的事情嗎? –
可悲的是有沒有這樣的事情在PHP forelse loop
,但如果你正在使用laravel
,在他們blade templating engine
他們有一個forelse loop
即是這樣的
@forelse($arrays as $string)
<p>{{ $string }}</p>
@empty
<p>Empty</p>
@endforelse
這裏
更多信息 - >https://laravel.com/docs/5.4/blade#loops
但是如果你不使用laravel's blade templating engine
,你可以做一個解決方法,像這樣的事情會是一個很好的方法
if(count($arrays)) {
foreach($arrays as $string) {
echo '<p>'. $string .'</p>';
}
} else {
echo '<p>Empty!</p>';
}
如果你想出了一個更好的主意,請給我發個禮拜。
根據http://docs.python.org/dev/py3k/reference/compound_stmts.html#the-for-statement,'else'子句在循環結束時被調用,除非'break'聲明達成,不僅當'我'是空的。 – Evpok
@Evpok你是對的 - 我的錯誤。現在我想知道在下面的答案中編寫PHP代碼的pythonic方法! –
我能想到的只不過是'如果不是我:...其他:...' – Evpok