Php 如何使5有条件只有1如果2如果1其他?

Php 如何使5有条件只有1如果2如果1其他?,php,Php,我有一个特定的条件,如下所示 >80 category A 71-80 category AB 51-70 category B 41-50 category BC <40 category C 但我的代码如下所示 90 = A 72 = AB 55 = B 45 = BC 10 = BC 如果允许您使用三元数,您可以这样做: if ($value > 80) { $category = 'A'; } else if ($value > 70) {

我有一个特定的条件,如下所示

>80 category A
71-80 category AB 
51-70 category B
41-50 category BC 
<40 category C
但我的代码如下所示

90 = A 
72 = AB
55 = B 
45 = BC
10 = BC 

如果允许您使用三元数,您可以这样做:

if ($value > 80) {
    $category = 'A';
} else if ($value > 70) {
    $category = 'AB';
} else if ($value > 50) {
    $category = 'B';
} else {
    $category = $value > 40 ? 'BC' : 'C';
}

@u_mulder认为同样的^^

如果重点是限制关键字
If
else
else If
,那么可以在最后一个else中使用三元运算符

function getCat($val)
{
    $cat = '';

    if ($val >= 81) {
        $cat = 'A';
    } else if ($val >= 71 && $val <= 80) {
        $cat = 'AB';
    } else if ($val >= 51 && $val <= 70) {
        $cat = 'B';
    } else {
        $cat = $val < 40 ? 'C' : 'BC';
    }

    return $cat;
}
函数getCat($val) { $cat=''; 如果($val>=81){ $cat='A';
}否则,如果($val>=71&&$val=51&&$val您可以这样做:

<?php

$value = 81;
$edge_cases = ['C','A'];

$category = '';

if($value > 40 && $value <= 50){
    $category = 'BC';
}else if($value > 50 && $value <= 70){
    $category = 'B';
}else if($value > 70 && $value <= 80){
    $category = 'AB';
}else{
    $quotient = intval($value / 80);
    $index = abs(intval($quotient / (($quotient - 1) | 1)));
    $category = $edge_cases[$index];
}

echo $category;

这样如何,只使用一个if语句,并且您在其中一个注释中表示希望使用数组解决方案:

$categories = [
   '80' => 'A',
   '71' => 'AB',
   '51' => 'B',
   '41' => 'BC',
];

$value = "10";
$category= "C";
foreach ($categories as $minVal => $cat) {
  if ($value >= $minVal) {
     $category = $cat;
     break;
  }
}

echo $category;

抱歉-我想我完全没有抓住要点,但我想我会回答更多的娱乐问题,作为问题的一个完整的替代方案。我提出了“如果没有”的解决方案

$category = ['C', 'C', 'C', 'C', 'BC', 'B', 'B', 'AB', 'A', 'A' ];

echo $category[min(max(floor(($value-1)/10),0),9)];
我最后添加了
min()
max()
,以确保它不会在-1或101中出错


如果人们认为我的答案应该被删除,那么请告诉我,因为我没有回答原来的问题:-/

这里有一种方法应该满足条件。其他的
显然不是真的需要

$category = '';
if ($value > 70 && !($category .= 'A')) {
} elseif ($value > 40 && $value < 81 && !($category .='B')) {
} elseif ($value < 51 && $category .= 'C') {
} else {}
$category='';
如果($value>70&&!($category.='A')){
}elseif($value>40&&$value<81&&!($category.='B')){
}elseif($value<51&&$category.='C'){
}else{}
试试这个

if ($value < 40 ) {
    $category = "C";
}else if ($value <= 50 && $value != 40) {
    $category = "BC";
}else if ($value <= 70 ) {
    $category = "B";
}else{
    $category = $value > 80 ? "A" : "AB";
}
if($value<40){
$category=“C”;

}否则如果($value),你不能用2
elseif
。要求来自何方?作业?面试问题?仅仅因为?这是代码挑战college@MalhadiJr对于
=40
,答案是什么?通过这种方法,我们甚至可以减少到
(如果不是这样的话
)这是我朋友的一个备选答案,他用C++编写代码,谢谢,我认为这是一个替代的解决方案。但是我想知道是否有一个解决方案使用数组来存储分类。这是我朋友的一个备选答案,他用C++在代码中编写代码,他将值除以50。然后分配R。esult到一个数组以获得类别。@MalhadiJr这就是答案。在有限范围内除法只提供两个选项
0
1
$category = '';
if ($value > 70 && !($category .= 'A')) {
} elseif ($value > 40 && $value < 81 && !($category .='B')) {
} elseif ($value < 51 && $category .= 'C') {
} else {}
if ($value < 40 ) {
    $category = "C";
}else if ($value <= 50 && $value != 40) {
    $category = "BC";
}else if ($value <= 70 ) {
    $category = "B";
}else{
    $category = $value > 80 ? "A" : "AB";
}