php 多选题评分算法 求指导
多选题一题3分
原则是:少选给2分,多选不给分,选错不给分
假如:正确答案123
提交答案 123 得3分
提交答案 12,13,23,都可得2分
提交答案 1234,234,134,124 没分
怎么实现,还是有更好的方法
------解决方案--------------------
按你的描述,你的多选题不是用 checkbox 而是用 text 输入的
并且备选答案不会多于9个
于是得分可写作
count(array_intersect(str_split($正确答案), str_split($提交答案));
就是:分别切割成数组,然后取交集
------解决方案--------------------
如果你是使用 checkbox
那么提交后得到的就是数组,与正确答案数组取交集就是了
------解决方案--------------------
$正确答案 = array(1, 2, 3);
$提交答案 = array(1, 2);
$得分 = count(array_intersect($正确答案, $提交答案));
echo $得分; //2
------解决方案--------------------
取交集和楼主的题目要求不符合吧,比如提交答案为数组array(1,2,4),那么交集也是(1,2),实际应该得0分吧。
------解决方案--------------------
是的,不完全符合。
但是选 1,2,4 就不得分是不合常理的。除非 4 是反选项,比如:都不是
如果是这样的话,出题者就是在有意误导答题者
如果非要这样出题的话,可以这样写
$正确答案 = array(1, 2, 3);<br /> $错误答案 = array(4);<br /> $提交答案 = array(1, 2, 4);<br /> $得分 = array_intersect($错误答案, $提交答案) ? 0 : count(array_intersect($正确答案, $提交答案));<br /> echo $得分; //0
------解决方案--------------------
交并差就可以了
答卷在前,答案在后
有差集,不给分
无交集,不给分(排除上一个后这个是考虑空白答卷的情况,如果确认不会有白卷这句可以不用)
无差集,有交集,交集数量!=答卷,半分
无差集,有交集,交集数量=答卷,满分(这个可以不写逻辑,直接用else也行,因为排除上面几种情况剩下就是交集相等)
注意
1.上面要顺序判断,是 else if 不相容逻辑而不是 switch 可容逻辑,因为省了一些判断条件
2.答卷和答案都要确保无重复值,不然交集数量判断会有问题
------解决方案--------------------
可以用位运算来计算
A:1 B:2 C:4 D:8
如何选择AB 则为3
如何选择ABCD 则为15
比如正确为4 则 看看选择的结果为N跟4比
if(N==4) 3分
if 4&N==N 2分
其他 O分
------解决方案--------------------
位运算是不错的选择,选择肢 但更大就不太方便了
------解决方案--------------------
按照老大的思路,可以这样做
<br> $correct = array(1, 2, 3);<br> $submit = array(1, 2);<br> $score = count(array_intersect($correct, $submit));<br> if($score $score = 0;<br> }<br> echo $score; //2 <div class="clear"> </div>

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

tomakephpapplicationsfaster,关注台词:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,关注台词:1)启用opcodeCachingwithapCutoredUcescriptexecutiontime.2)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

依赖注入(DI)通过显式传递依赖关系,显着提升了PHP代码的可测试性。 1)DI解耦类与具体实现,使测试和维护更灵活。 2)三种类型中,构造函数注入明确表达依赖,保持状态一致。 3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版
视觉化网页开发工具

Dreamweaver CS6
视觉化网页开发工具

SublimeText3汉化版
中文版,非常好用