我有一个PHP脚本,其中有一个整数数组,比方说$forbidden。我想得到一个1到400之间的随机整数,它不在$forbidden中。当然,我不希望任何在rand给出工作结果时中断的循环。我想要更有效的东西。你是怎么做到的? 最佳答案 将所有禁止的数字放在一个数组中,并使用range(1,400)中的array_diff。您将获得一组允许的数字,使用array_rand()随机选择一个。这样您就可以从选择集中删除排除的数字,并消除循环的需要:) 关于php-有条件的随机整数,我们在St
我最近要求工作中的应用程序架构师审核php我编写的脚本是为了自动执行我每周在服务台部门执行的一些任务。他在评论中说##LoopsYourloopsaregood,youdidn'tdoanythingbadlikecallingfunctionsintheconditionfor($i=0;$i老实说,我以前从未想过在我的代码中这样做,但这让我想知道为什么它会很糟糕。我认为这是因为,函数的结果可能是任何值,这似乎是创建无限循环的完美方式,而且通常会导致意外行为。我试过谷歌搜索但找不到任何相关结果所以我问:为什么在for循环的条件下调用函数不好?注意count($array)对我来说,评
我在Laravel中有一个表单,我想在其中验证基于复选框的三个文本字段。它是一个编辑用户表单,如果我选择是,我只想在其中更新密码。这是我认为的形式:Edit:{!!$user->name!!}{!!Form::model($user,['method'=>'PATCH','action'=>['AccountController@update',$user->id],'files'=>true])!!}Name:{!!Form::text('name')!!}Email:{!!Form::text('email')!!}UpdatePassword?(tickforyes)
最近看到很多这样的代码:if($foo=$bar->getFoo()){baz($foo);}这是好的还是坏的做法?例如,NetBeans如果您使用这种代码,IDE会发出通知:Possibleaccidentalassignment,assignmentsinconditionsshouldbeavoided你怎么看? 最佳答案 这是一个有用的工具,我不得不承认有时会使用它来避免为作业增加一行。一方面,这对某些人来说可能是不好的做法,因为:在其他通用语言中没有可用的成语可读性差另一方面:隐式bool值转换不会出现在其他语言中,但它们
我有这样的查询:SELECT*FROMactivityWHERE(((userId=1ORuserIdIN(SELECTuserIdFROMfollowerWHEREfollowerId=1))ANDactivityTypeIN(1,2,3))OR(targetId=24ANDaTypeIN(1,2,3,4,5)))ORDERBYidDESC;我已经尝试使用model()->findAllBySql($sql)并且它有效。但我想使用CDbCriteria来实现它,如果您有其他解决方案请告诉我:D 最佳答案 您仍然可以使用我认为的CD
下面两个if产生了不同的结果(第一个if回应hi,第二个不回应),为什么?为什么$t上的变量赋值不起作用?这是由于$t在if条件语句中的局部范围吗?if(isset($_REQUEST["test"])&&$t=trim($_REQUEST["test"])&&!empty($t)){echo'hi'}if(isset($_REQUEST["test"])&&$t=trim($_REQUEST["test"])){if(!empty($t))echo'hi'} 最佳答案 &&有一个higherprecedence比=,因此第一个表达
我真的不明白如何在zend框架2中使用谓词。这是我得到的:$sql->select()->columns(array('GroupedColum','minValue'=>newExpression('min(ValueColumn)')))->from('ValueTable')->group('GroupedColum')->order('minValue')->order('GroupedColum')->limit(10);一切正常现在我想应用类似的东西:$predicate=newZend\Db\Sql\Predicate\Predicate();$sql->where($p
是否有一种优雅的方法来检查在给定数量的条件中是否有多个(但不是全部)条件为真?例如,我有三个变量:$a、$b和$c。我想检查其中任何两个是否为真。所以以下将通过:$a=true;$b=false;$c=true;但这不会:$a=false;$b=false;$c=true;另外,例如,我可能想检查7个条件中的4个是否为真。我知道我可以检查每个组合,但随着条件数量的增加,这会变得更加困难。遍历条件并保持计数是我能想到的最佳选择,但我认为可能有不同的方法来做到这一点。谢谢!编辑:感谢所有出色的回答,非常感谢。顺便说一下,如果变量不是显式bool值怎么办?例如($a==2)($b!="che
我写了一个有很多条件的简单脚本:$item=12;if($item这是一个很长的多重条件,我知道这很糟糕。如何优化代码?注意switch不可能,因为我正在使用运算符和>等 最佳答案 比一堆条件更好的是寻找一个只允许计算它的模式。在您的情况下,它看起来像是5步-非常适合除法。或者映射它:$item=12;$icons=[10=>'buyer',15=>'goodbuyer',20=>'topbuyer',];foreach($iconsas$value=>$icon){if($item这允许更灵活的步骤(正如您在相关数据中所拥有的那样
假设我有一段代码如下所示:if(!isset($this->domainID)&&!$this->getDomainID()){returnfalse;}如果第一个语句为真,第二个语句会运行吗?因为性能明智,如果我已经得到它,那么从数据库中获取ID是愚蠢的,并且有很多其他情况同样适用。如果不是,我必须将它们嵌套,对吗?我不知道是否有关于编程语言在这些情况下如何工作的标准,或者其他语言是否与php不同。我试着用谷歌搜索,但我真的不知道在这种情况下要搜索什么。如您所见,我很难在标题中对其进行描述。 最佳答案 是的。如果第一个为真,则将评