2011-08-11 27 views
12

Python cung cấp cho ... cấu trúc khác như thế này:Đối với ... các vòng lặp/kiểm soát luồng khác trong PHP?

for value in i: 
    print value 
else: 
    print 'i is empty' 

tương đương gần đây trong PHP là gì?

Chỉnh sửa: xem nhận xét của @ Evpok bên dưới - cho ... khác không thực sự hoạt động như báo cáo in đề xuất. Lỗi của tôi xin lỗi!

+3

Theo http://docs.python.org/dev/py3k/reference/compound_stmts.html#the-for-statement, mệnh đề 'else' được gọi ở cuối vòng lặp, trừ khi một' ngắt' tuyên bố đạt được, không chỉ khi 'i' trống. – Evpok

+0

@Evpok bạn đúng - sai lầm của tôi. Bây giờ tôi muốn biết cách bắt buộc để viết mã PHP trong các câu trả lời dưới đây! –

+1

Tôi không thể nghĩ gì cả, nhưng 'nếu không tôi: ... khác: cho ... ' – Evpok

Trả lời

4
if (count($i) > 0) { 
    foreach ($i as $x) { ... } 
} else { 
    echo 'i is empty'; 
} 

giả định i là một mảng.

7
if (!empty($array)){ 
    foreach ($array as $val) 
     echo $val; 
} 
else 
    echo "array is empty"; 
8

Để giải thích cho tất cả traversables, bao gồm cả những người không đếm được, cách tiếp cận đúng sẽ là:

$iterated = false; 
foreach ($traversable as $value) { 
    $iterated = true; 

    echo $value; 
} 

if (!$iterated) { 
    echo 'traversable is empty'; 
} 

Nếu bạn đang viết code tổng quát đây là con đường để đi. Nếu bạn biết rằng bạn sẽ nhận được một traversable đếm được, phương pháp count rõ ràng là đẹp hơn để đọc.

3

Làm thực hiện chính xác như hướng dẫn python nói là thế này:

$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. 
} 
+1

quá nhiều việc. không cần thiết .. – totten

+0

@totten Triết lý ở đây là nó là tốt hơn để được rõ ràng về những gì bạn đang làm. Kể từ khi nó trở nên rõ ràng hơn cho những người sẽ đọc mã của bạn. –

0

Tôi nhận ra điều này không trả lời ví dụ cụ thể của bạn, nhưng tôi đã sử dụng goto như một cách giải quyết cho người khác cho -> khác Python để PHP vấn đề :

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: 
    } 

Có lẽ đây là câu trả lời thực tế hơn.

+0

Sẽ không có một break đã hoàn thành điều tương tự? –

0

Đáng buồn là không có những điều như forelse loop trong PHP, nhưng nếu bạn đang sử dụng laravel, trong blade templating engine của họ, họ có một forelse loop mà đi một cái gì đó như thế này

@forelse($arrays as $string) 
    <p>{{ $string }}</p> 
@empty 
    <p>Empty</p> 
@endforelse 

biết thêm thông tin ở đây ->https://laravel.com/docs/5.4/blade#loops

nhưng bạn có thể thực hiện một công việc xung quanh nếu bạn không sử dụng laravel's blade templating engine, một cái gì đó như thế này sẽ là một cách tiếp cận tuyệt vời

if(count($arrays)) { 
    foreach($arrays as $string) { 
    echo '<p>'. $string .'</p>'; 
    } 
} else { 
    echo '<p>Empty!</p>'; 
} 

nếu bạn nghĩ ra một ý tưởng hay hơn, hãy làm tôi vui lòng.

Các vấn đề liên quan