客户需求是把Excel的分数和年龄对应的Excel数据展示在结果页面
解决思路分析:
纵坐标分数1-72, 横坐标年龄5.5-64
数据不具有连续性,写if、else判断要72x23个,有一些可以合并,大概还是100+个if else
换个思路,横竖就是二维数组,把excel的数据解析为二维数组即可,直接粘贴复制到记事本,用n 换行分割为一层,用空格分割为二层数组
代码如下:
$str = "54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
56 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
58 60 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
60 60 58 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
62 62 60 58 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
65 64 62 60 58 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
68 65 64 63 60 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
70 66 65 65 62 56 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
73 67 66 66 64 58 56 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
75 68 68 68 65 60 58 56 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
80 69 69 69 66 61 60 58 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
85 70 70 70 66 62 61 59 56 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
90 75 75 73 67 63 61 60 57 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 62
92 80 80 75 67 64 62 60 58 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 65
95 85 85 76 68 65 62 61 59 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 54 67
98 88 86 77 68 66 63 61 60 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 58 68
100 90 86 78 69 68 64 62 60 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 64 69
102 92 87 78 70 70 64 62 61 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 54 66 70
104 94 87 79 71 71 65 62 62 56 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 58 67 70
105 95 88 80 72 71 65 63 62 56 55 54 <54 <54 <54 <54 <54 <54 <54 <54 64 69 71
106 97 89 82 73 72 65 63 63 56 56 55 <54 <54 <54 <54 <54 <54 <54 54 65 70 71
108 99 90 84 74 72 66 64 64 57 56 56 <54 <54 <54 <54 <54 <54 <54 58 67 71 72
109 100 91 85 75 73 66 64 64 57 57 57 <54 <54 <54 <54 <54 <54 <54 62 68 72 73
110 103 92 86 78 73 66 65 65 58 58 58 <54 <54 <54 <54 <54 <54 <54 64 69 73 74
112 105 93 86 80 74 67 66 65 59 59 59 <54 <54 <54 <54 <54 <54 <54 65 70 73 75
115 106 93 87 81 74 67 66 65 60 60 60 <54 <54 <54 <54 <54 <54 54 67 71 74 76
116 108 94 88 82 75 67 66 66 61 60 61 <54 <54 <54 <54 <54 <54 58 68 72 75 77
118 110 95 89 83 76 68 66 66 62 61 62 <54 <54 <54 <54 <54 <54 62 69 73 76 78
120 111 95 90 83 78 68 67 66 62 62 62 <54 <54 <54 <54 <54 54 64 70 74 77 79
123 112 96 91 84 80 68 67 67 63 63 63 <54 <54 <54 <54 <54 58 65 70 75 77 80
125 113 97 92 85 81 69 67 67 63 64 64 <54 <54 <54 <54 <54 62 67 71 76 78 81
126 114 98 93 86 82 69 67 67 64 64 64 <54 <54 <54 <54 54 64 68 72 77 79 81
127 115 98 94 88 83 70 68 68 65 65 65 <54 <54 <54 <54 58 67 69 73 77 80 82
128 116 99 95 90 83 71 68 68 65 65 65 <54 <54 <54 <54 62 69 70 74 78 81 83
129 117 100 96 91 84 71 68 68 66 66 66 <54 <54 <54 <54 64 70 71 75 79 82 84
130 117 101 96 92 85 72 69 69 66 66 66 <54 <54 <54 <54 65 71 72 77 79 83 85
133 118 102 97 93 86 72 69 69 67 66 66 <54 <54 <54 54 67 72 73 78 80 85 85
135 119 103 98 93 87 73 69 69 67 67 67 <54 54 54 58 69 73 74 79 80 85 86
135+ 120 103 98 94 88 74 70 70 68 67 67 54 55 58 62 70 74 75 80 81 86 86
135+ 122 104 99 95 88 75 73 72 68 68 68 58 62 62 63 71 76 76 81 82 86 87
135+ 123 105 99 96 89 76 75 74 69 68 68 61 64 64 65 72 77 77 82 84 86 88
135+ 124 106 100 98 89 78 76 75 70 69 69 63 65 65 67 73 78 79 83 85 87 89
135+ 125 108 103 99 90 80 77 76 71 69 69 65 67 67 69 74 79 80 84 85 89 90
135+ 126 109 105 100 91 82 77 76 71 70 70 67 69 69 70 75 80 82 85 86 90 91
135+ 127 110 106 101 93 84 78 77 72 71 71 68 70 70 71 76 83 83 86 86 91 92
135+ 128 112 108 102 94 85 79 78 72 71 71 70 71 71 72 77 85 85 87 87 92 93
135+ 129 115 110 103 95 90 80 79 73 72 72 71 72 72 73 78 86 86 88 89 93 94
135+ 130 120 112 104 96 92 83 80 73 72 72 72 73 73 74 79 87 88 90 90 94 95
135+ 131 124 114 105 97 94 85 82 74 73 73 73 74 74 75 80 88 90 90 91 95 96
135+ 132 125 115 106 98 95 90 84 75 74 73 74 75 75 76 82 89 91 91 91 96 98
135+ 134 126 120 108 99 96 91 85 80 74 73 75 76 76 77 83 90 92 92 92 97 99
135+ 135 128 122 110 100 98 93 86 82 75 74 76 77 77 78 85 91 93 93 93 98 100
135+ 135+ 130 124 115 103 99 94 87 84 76 74 78 79 79 79 86 93 95 95 95 99 101
135+ 135+ 135 125 116 105 100 95 89 85 78 75 80 80 80 81 87 94 97 97 97 100 102
135+ 135+ 135+ 126 118 106 102 96 90 90 79 78 81 82 82 84 88 96 98 98 98 101 103
135+ 135+ 135+ 128 119 108 104 98 92 92 80 80 82 85 85 86 90 98 99 100 100 102 104
135+ 135+ 135+ 130 120 110 105 99 94 94 85 85 83 86 87 88 92 100 100 101 101 103 105
135+ 135+ 135+ 132 123 112 106 100 95 95 90 88 86 88 89 90 94 101 102 102 102 104 107
135+ 135+ 135+ 133 125 114 107 103 98 98 95 90 88 90 91 92 96 102 103 103 103 106 109
135+ 135+ 135+ 134 130 115 108 105 100 100 98 95 91 91 93 95 98 104 105 105 106 107 110
135+ 135+ 135+ 135 132 120 110 110 105 103 100 96 94 94 95 97 100 106 108 108 108 109 112
135+ 135+ 135+ 135+ 134 125 115 115 103 105 103 98 97 97 98 100 102 108 110 110 110 110 114
135+ 135+ 135+ 135+ 135 124 120 120 110 108 105 100 100 100 100 101 105 110 112 112 112 112 116
135+ 135+ 135+ 135+ 135+ 130 125 122 113 110 108 105 102 102 102 103 108 112 113 113 113 114 117
135+ 135+ 135+ 135+ 135+ 135 130 124 115 115 110 110 106 106 106 107 110 114 115 115 116 117 118
135+ 135+ 135+ 135+ 135+ 135+ 125 120 120 115 115 108 108 108 109 113 118 118 119 119 119 120
135+ 135+ 135+ 135+ 135+ 135+ 135 130 125 125 120 120 114 114 114 115 116 120 120 121 121 121 123
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135 130 130 125 125 116 116 116 117 119 124 124 124 125 125 127
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135 135 130 130 122 122 122 123 123 127 127 128 130 130 132
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 133 133 128 128 128 128 129 129 132 132 133 133 133
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135 135 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+
";
$arr = explode("n",$str);
$arr = array_filter($arr);
$arr = array_values($arr);
foreach($arr as &$val){
$arr2 = explode(" ",$val);
$arr2 = array_filter($arr2);
$arr2 = array_values($arr2);
$val = $arr2;
}
第二步,因为横坐标是有区间的40-44都算一个key,单独要写一下这部分逻辑
if($age <= 5.5){
$age_key=0;
}elseif($age <= 6.5){
$age_key=1;
}elseif($age <= 7.5){
$age_key=2;
}elseif($age <= 8.5){
$age_key=3;
}elseif($age <= 9.5){
$age_key=4;
}elseif($age <= 10.5){
$age_key=5;
}elseif($age <= 11.5){
$age_key=6;
}elseif($age <= 12.5){
$age_key=7;
}elseif($age <= 13.5){
$age_key=8;
}elseif($age <= 14.5){
$age_key=9;
}elseif($age <= 15.5){
$age_key=10;
}elseif($age <= 16.5){
$age_key=11;
}elseif($age <= 17.5){
$age_key=12;
}elseif($age <= 18.5){
$age_key=13;
}elseif($age > 18.5 &&$age <= 24){
$age_key=14;
}elseif($age >= 25 &&$age <= 29){
$age_key=15;
}elseif($age >= 30 &&$age <= 34){
$age_key=16;
}elseif($age >= 35 &&$age <= 39){
$age_key=17;
}elseif($age >= 40 &&$age <= 44){
$age_key=18;
}elseif($age >= 45 &&$age <= 49){
$age_key=19;
}elseif($age >= 50 &&$age <= 54){
$age_key=20;
}elseif($age >= 55 &&$age <= 59){
$age_key=21;
}else{
//if($age >= 60 &&$age <= 64)
$age_key=22;
}
最后测试和检查一下,score是有可能大于72的,key越界,所以限制一下
$score > 72 ? $score=72:"";
最终版本
private function getZhishang($score,$age){
$str = "54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
56 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
58 60 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
60 60 58 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
62 62 60 58 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
65 64 62 60 58 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
68 65 64 63 60 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
70 66 65 65 62 56 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
73 67 66 66 64 58 56 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
75 68 68 68 65 60 58 56 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
80 69 69 69 66 61 60 58 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
85 70 70 70 66 62 61 59 56 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <62
90 75 75 73 67 63 61 60 57 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 62
92 80 80 75 67 64 62 60 58 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 65
95 85 85 76 68 65 62 61 59 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 54 67
98 88 86 77 68 66 63 61 60 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 58 68
100 90 86 78 69 68 64 62 60 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 <54 64 69
102 92 87 78 70 70 64 62 61 55 54 <54 <54 <54 <54 <54 <54 <54 <54 <54 54 66 70
104 94 87 79 71 71 65 62 62 56 55 <54 <54 <54 <54 <54 <54 <54 <54 <54 58 67 70
105 95 88 80 72 71 65 63 62 56 55 54 <54 <54 <54 <54 <54 <54 <54 <54 64 69 71
106 97 89 82 73 72 65 63 63 56 56 55 <54 <54 <54 <54 <54 <54 <54 54 65 70 71
108 99 90 84 74 72 66 64 64 57 56 56 <54 <54 <54 <54 <54 <54 <54 58 67 71 72
109 100 91 85 75 73 66 64 64 57 57 57 <54 <54 <54 <54 <54 <54 <54 62 68 72 73
110 103 92 86 78 73 66 65 65 58 58 58 <54 <54 <54 <54 <54 <54 <54 64 69 73 74
112 105 93 86 80 74 67 66 65 59 59 59 <54 <54 <54 <54 <54 <54 <54 65 70 73 75
115 106 93 87 81 74 67 66 65 60 60 60 <54 <54 <54 <54 <54 <54 54 67 71 74 76
116 108 94 88 82 75 67 66 66 61 60 61 <54 <54 <54 <54 <54 <54 58 68 72 75 77
118 110 95 89 83 76 68 66 66 62 61 62 <54 <54 <54 <54 <54 <54 62 69 73 76 78
120 111 95 90 83 78 68 67 66 62 62 62 <54 <54 <54 <54 <54 54 64 70 74 77 79
123 112 96 91 84 80 68 67 67 63 63 63 <54 <54 <54 <54 <54 58 65 70 75 77 80
125 113 97 92 85 81 69 67 67 63 64 64 <54 <54 <54 <54 <54 62 67 71 76 78 81
126 114 98 93 86 82 69 67 67 64 64 64 <54 <54 <54 <54 54 64 68 72 77 79 81
127 115 98 94 88 83 70 68 68 65 65 65 <54 <54 <54 <54 58 67 69 73 77 80 82
128 116 99 95 90 83 71 68 68 65 65 65 <54 <54 <54 <54 62 69 70 74 78 81 83
129 117 100 96 91 84 71 68 68 66 66 66 <54 <54 <54 <54 64 70 71 75 79 82 84
130 117 101 96 92 85 72 69 69 66 66 66 <54 <54 <54 <54 65 71 72 77 79 83 85
133 118 102 97 93 86 72 69 69 67 66 66 <54 <54 <54 54 67 72 73 78 80 85 85
135 119 103 98 93 87 73 69 69 67 67 67 <54 54 54 58 69 73 74 79 80 85 86
135+ 120 103 98 94 88 74 70 70 68 67 67 54 55 58 62 70 74 75 80 81 86 86
135+ 122 104 99 95 88 75 73 72 68 68 68 58 62 62 63 71 76 76 81 82 86 87
135+ 123 105 99 96 89 76 75 74 69 68 68 61 64 64 65 72 77 77 82 84 86 88
135+ 124 106 100 98 89 78 76 75 70 69 69 63 65 65 67 73 78 79 83 85 87 89
135+ 125 108 103 99 90 80 77 76 71 69 69 65 67 67 69 74 79 80 84 85 89 90
135+ 126 109 105 100 91 82 77 76 71 70 70 67 69 69 70 75 80 82 85 86 90 91
135+ 127 110 106 101 93 84 78 77 72 71 71 68 70 70 71 76 83 83 86 86 91 92
135+ 128 112 108 102 94 85 79 78 72 71 71 70 71 71 72 77 85 85 87 87 92 93
135+ 129 115 110 103 95 90 80 79 73 72 72 71 72 72 73 78 86 86 88 89 93 94
135+ 130 120 112 104 96 92 83 80 73 72 72 72 73 73 74 79 87 88 90 90 94 95
135+ 131 124 114 105 97 94 85 82 74 73 73 73 74 74 75 80 88 90 90 91 95 96
135+ 132 125 115 106 98 95 90 84 75 74 73 74 75 75 76 82 89 91 91 91 96 98
135+ 134 126 120 108 99 96 91 85 80 74 73 75 76 76 77 83 90 92 92 92 97 99
135+ 135 128 122 110 100 98 93 86 82 75 74 76 77 77 78 85 91 93 93 93 98 100
135+ 135+ 130 124 115 103 99 94 87 84 76 74 78 79 79 79 86 93 95 95 95 99 101
135+ 135+ 135 125 116 105 100 95 89 85 78 75 80 80 80 81 87 94 97 97 97 100 102
135+ 135+ 135+ 126 118 106 102 96 90 90 79 78 81 82 82 84 88 96 98 98 98 101 103
135+ 135+ 135+ 128 119 108 104 98 92 92 80 80 82 85 85 86 90 98 99 100 100 102 104
135+ 135+ 135+ 130 120 110 105 99 94 94 85 85 83 86 87 88 92 100 100 101 101 103 105
135+ 135+ 135+ 132 123 112 106 100 95 95 90 88 86 88 89 90 94 101 102 102 102 104 107
135+ 135+ 135+ 133 125 114 107 103 98 98 95 90 88 90 91 92 96 102 103 103 103 106 109
135+ 135+ 135+ 134 130 115 108 105 100 100 98 95 91 91 93 95 98 104 105 105 106 107 110
135+ 135+ 135+ 135 132 120 110 110 105 103 100 96 94 94 95 97 100 106 108 108 108 109 112
135+ 135+ 135+ 135+ 134 125 115 115 103 105 103 98 97 97 98 100 102 108 110 110 110 110 114
135+ 135+ 135+ 135+ 135 124 120 120 110 108 105 100 100 100 100 101 105 110 112 112 112 112 116
135+ 135+ 135+ 135+ 135+ 130 125 122 113 110 108 105 102 102 102 103 108 112 113 113 113 114 117
135+ 135+ 135+ 135+ 135+ 135 130 124 115 115 110 110 106 106 106 107 110 114 115 115 116 117 118
135+ 135+ 135+ 135+ 135+ 135+ 125 120 120 115 115 108 108 108 109 113 118 118 119 119 119 120
135+ 135+ 135+ 135+ 135+ 135+ 135 130 125 125 120 120 114 114 114 115 116 120 120 121 121 121 123
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135 130 130 125 125 116 116 116 117 119 124 124 124 125 125 127
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135 135 130 130 122 122 122 123 123 127 127 128 130 130 132
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 133 133 128 128 128 128 129 129 132 132 133 133 133
135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135 135 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+ 135+
";
$arr = explode("n",$str);
$arr = array_filter($arr);
$arr = array_values($arr);
foreach($arr as &$val){
$arr2 = explode(" ",$val);
$arr2 = array_filter($arr2);
$arr2 = array_values($arr2);
$val = $arr2;
}
if($age <= 5.5){
$age_key=0;
}elseif($age <= 6.5){
$age_key=1;
}elseif($age <= 7.5){
$age_key=2;
}elseif($age <= 8.5){
$age_key=3;
}elseif($age <= 9.5){
$age_key=4;
}elseif($age <= 10.5){
$age_key=5;
}elseif($age <= 11.5){
$age_key=6;
}elseif($age <= 12.5){
$age_key=7;
}elseif($age <= 13.5){
$age_key=8;
}elseif($age <= 14.5){
$age_key=9;
}elseif($age <= 15.5){
$age_key=10;
}elseif($age <= 16.5){
$age_key=11;
}elseif($age <= 17.5){
$age_key=12;
}elseif($age <= 18.5){
$age_key=13;
}elseif($age > 18.5 &&$age <= 24){
$age_key=14;
}elseif($age >= 25 &&$age <= 29){
$age_key=15;
}elseif($age >= 30 &&$age <= 34){
$age_key=16;
}elseif($age >= 35 &&$age <= 39){
$age_key=17;
}elseif($age >= 40 &&$age <= 44){
$age_key=18;
}elseif($age >= 45 &&$age <= 49){
$age_key=19;
}elseif($age >= 50 &&$age <= 54){
$age_key=20;
}elseif($age >= 55 &&$age <= 59){
$age_key=21;
}else{
//if($age >= 60 &&$age <= 64)
$age_key=22;
}
$score > 72 ? $score=72:"";
return $arr[$score-1][$age_key];
}
最终运行结果