2013-02-04 26 views
12

Tôi mới sử dụng PHP và cố gắng tạo ra những điều sau đây trong khi giảm thiểu số lượng mã cần thiết. PHP sẽ hiển thị một danh sách 100 sau đó hiển thị nếu số là/bằng 3, 5 hoặc 3 và 5. Nếu không có thì không hiển thị gì cả.PHP - Nếu số chia hết cho 3 và 5 thì hãy echo

Đây là những gì tôi đã có cho đến nay, nhưng bất kỳ trợ giúp sẽ là tuyệt vời vì không chắc chắn về/by 3 và 5 bit như bạn có thể xem bên dưới.

<?php $var = range(0, 100); ?> 
    <table> 
<?php foreach ($var as &$number) { 
echo " <tr> 
    <td>$number</td> 
    <td>"; 

    if($number % 3 == 0) { 
    echo "BY3"; 
} elseif ($number % 5 == 0) { 
    echo "BY5"; 
} elseif ($number % 3 and 5 == 0) { 
     echo "BY3 AND 5"; 
} 
echo "</td></tr>"; 
} 
?> 

    </table> 

Cảm ơn

+1

Nhắc tôi [Project Euler vấn đề 1] (https://projecteuler.net/problem=1) – HamZa

+0

này nhắc nhở tôi về FizzBuzz vấn đề, ProjectEuler # 1 là một khổng lồ so với câu hỏi này. – hijarian

Trả lời

20

Nope ... bạn nên kiểm tra đầu tiên nếu nó divisble 15 (3x5) (hoặc 3 và 5) và sau khi bạn có thể làm kiểm tra khác:

if($number % 15 == 0) { 
    echo "BY3 AND 5"; 
} elseif ($number % 5 == 0) { 
    echo "BY5"; 
} elseif ($number % 3 == 0) { 
    echo "BY3"; 
} 
echo "</td></tr>"; 

?> 

Bởi vì mỗi số chia cho 15 cũng chia hết cho 3 và 5. Vì vậy, lần kiểm tra cuối cùng của bạn không bao giờ có thể trúng

4

nếu tôi đọc câu hỏi của bạn đúng thì bạn đang tìm kiếm:

if ($number % 3 == 0 && $number %5 == 0) { 
     echo "BY3 AND 5"; 
} elseif ($number % 3 == 0) { 
    echo "BY3"; 
} elseif ($number % 5 == 0) { 
    echo "BY5"; 
} 

phiên bản thay thế:

echo ($number % 3 ? ($number % 5 ? "BY3 and 5" : "BY 3") : ($number % 5 ? "BY 5" : "")); 
+4

Bạn sẽ không bao giờ đánh thứ ba có điều kiện ... cho nó là đúng, một trong hai đầu tiên phải là tốt. – JAAulde

+0

Cảm ơn @JAAulde Tôi đã cập nhật và bổ sung thêm một lớp lót cũng như – Neo

1

Cập nhật các mã như đưa ra dưới đây

<?php $var = range(0, 100); ?> 
<table> 
<?php foreach ($var as &$number) 
{ 
echo " <tr> 
<td>$number</td> 
<td>"; 

if($number % 3 == 0 && $number % 5 == 0) 
{ 
    echo "BY3 AND 5"; 
} 
elseif ($number % 5 == 0) 
{ 
echo "BY5"; 
} 
elseif ($number % 3 == 0) 
{ 
    echo "BY3"; 
} 
echo "</td></tr>"; 
} 
?> 

+1

Bạn sẽ không bao giờ trúng điều kiện thứ ba ... vì nó là đúng, một trong hai cái đầu tiên cũng phải là tốt. – JAAulde

+0

ooops hiện đã cập nhật – Deep123

1
<?php 

if($number % 5 == 0 && $number % 3 == 0) { 
    echo "BY3 AND 5"; 
} elseif ($number % 5 == 0) { 
    echo "BY5"; 
} elseif ($number % 3 == 0) { 
    echo "BY3"; 
} else{ 
    echo "NOT BY3 OR 5"; 
} 
?> 
+0

Đây là thứ tự hoạt động phù hợp, nhưng nó có thể được đơn giản hóa hơn nữa. – JAAulde

+0

@JAAulde: làm thế nào? –

+0

Tệ của tôi đã không sắp xếp lại nhờ @JAAulde để chỉnh sửa! – Neo

1
if($number % 15 == 0) 
{ 
    echo "Divisible by 3 and 5"; 
} 
elseif ($number % 5 == 0) 
{ 
    echo "Divisible by 5"; 
} 
elseif ($number % 3 == 0) 
{ 
echo "Divisible by 3"; 
} 
2
$num_count = 100; 
    $div_3 = "Divisible by 3"; 
    $div_5 = "Divisible by 5"; 
    $div_both = "Divisible by 3 and 5"; 
    $not_div = "Not Divisible by 3 or 5"; 

    for($i=0;$i<=$num_count;$i++) 
    { 
     switch($i) 
     { 
      case ($i%15==0): 
      echo $i." (".$div_both.")</br>"; 
      break; 
      case ($i%3==0): 
      echo $i." (".$div_3.")</br>"; 
      break; 
      case ($i%5==0): 
      echo $i." (".$div_5.")</br>"; 
      break; 
      default: 
      echo $i."</br>"; 
      break; 
     } 
    } 
1

Không cần phải làm ba nếu phát biểu:

echo "<table border='1'>"; 

for ($i = 1; $i <= 100; $i++) { 

    echo "<tr><td>{$i}</td><td>"; 

    if ($i % 3 == 0) echo "BY3 "; 
    if ($i % 5 == 0) echo "BY5"; 

    echo "</td></tr>\n"; 
} 
echo "</table>"; 
Các vấn đề liên quan