1、foreach第一题://1。for循环执行了多少次//for($i=0;$i=1;$i++){//echo$i;//}$i==1条件为真,无限循环for($i=0;$i==1;$i++){echo$i;}由于$i==1条件不成立,for循环不执行第二题:classSomeClass{private$properties=[];公共$j;公共函数__set($name,$value){$this->properties[$name]=$value;}publicfunction__get($name){return$this->properties[$name];}}$obj=newSomeClass();$obj->name='phpgod';$obj->age=2;$obj->gender='male';//$obj->j=0;$l=null;var_dump($obj->name);//输出:string(6)"phpgod"var_dump($obj->j);//nullvar_dump(isset($obj->j));//因为$j没有赋值,为null,所以返回false//var_dump($obj->properties);var_dump(isset($obj->name));//私有或受保护的属性不能被调用,false//输出:bool(false),你的答案正确吗?为什么第三个问题:foreachandaddressoperator&$arr=[1,2,3,4,5,8];foreach($arras&$v){//nothingtodo.echo$v.'
';}//&为地址运算符,$v=&$a;那么$v就是$a变量在内部存储地址中,如果$v发生变化,$a也会发生变化,因为它是一个地址var_dump($arr);//1,2,3,4,5,8foreach($arras&$v){//nothingtodo.var_dump($arr);echo$v.'
';}var_export($arr);//1,2,3,4,5,5&是地址运算符,$v=&$a;此时$v就是$a变量的内部存储地址。如果$v改变,$a也会改变,因为它是一个地址。参考文档1:使用数组两次的陷阱foreachHanzi)stringreversalcontainsgarbagechinesestringPHP面试题,题目很短很常见,但是比较容易出错,题目如下如何实现字符串反转? 第一个反应当然是strrev函数了。这么简单的一道题,面试还是要考的。真的很麻烦吗?但是看了网上的答案,发现我错了~~~ strrev函数对英文很好用,可以直接翻转字符串,但是中文呢?肯定都是乱码。这样的问题还有很多,比如strstr、substr等函数。好在PHP提供了mb_函数来实现不同语言之间的不同编码和相互转换。下面是我写的PHP字符串翻转函数(mb_类的函数需要开启一个mb_string实现)。解决代码:state[7]=>middle[6]=>h[5]=>s[4]=>i[3]=>降序排列关联数组l[2]=>g[1]=>n[0]=>E)EnglishChina->GuozhonghsilgnE(ksort()将关联数组按键名升序排序)implode()将数组拼接成astringexplode()使用字符串分隔字符串*/functionstr_rev_gb($str){//判断输入是否为utf8字符,否则退出if(!is_string($str)||!mb_check_encoding($str,'UTF-8')){exit("输入类型不是UTF8字符串");}$数组=数组();//将字符串存入数组$l=mb_strlen($str,'UTF-8');//计算mb_strlen时,选择的内码为UTF8,一个汉字将被计算为长度1for($i=0;$i<$l;$i++){$array[]=mb_substr($str,$i,1,'UTF-8');}//反转字符串krsort($array);//拼接字符串$string=implode($array);return$string;}$str1="Englist";$str2="EnglishChina";$str3="EngChinesecountry";$str4="中华人民共和国";echo'直接使用PHP内置的strrev函数进行反转:'.'
';echo$str1."->".strrev($str1)."
";echo$str2."->".strrev($str2)."
";echo$str3."->".strrev($str3)."
";echo$str4."->".strrev($str4)."
";echo'
';echo$str1."->".str_rev_gb($str1)."
";echo$str2."->".str_rev_gb($str2)."
";echo$str3."->".str_rev_gb($str3)."
";echo$str4."->".str_rev_gb($str4)."
";运行结果:直接使用PHP内置的strrev函数反转:Englist->tsilgnEEenglish中国->??学。hsilgnEEngChina->...>需要注意的是,mb_strlen并不是PHP的核心函数。使用前需要确保php.ini中加载了php_mbstring.dll,即确保extension=php_mbstring.dll这一行存在且没有被注释,否则会出现未定义函数的问题参考文档:PHP实现字符串反转(包括汉字)参考://处理汉字functionstrReverseMb($str){$revStr='';如果(is_string($str)&&mb_check_encoding($str,"UTF-8")){$len=mb_strlen($str);对于($i=$len-1;$i>=0;$i--){$revStr.=mb_substr($str,$i,1,"UTF-8");}}return$revStr;}PHP官方文档中strrev函数的最下面给出了支持utf-8的解决方案:functionutf8_strrev($str){preg_match_all('/./us',$str,$ar);returnjoin('',array_reverse($ar[0]));}3、isset、empty、if的用法区别及0、''、null的关系3.1emptyboolempty(mixedvar)if的用法var不是空值或非零值,empty()返回FALSE。换句话说,"",0,"0",NULL,FALSE,array(),var$var;andobjectswithoutanyattributes将被认为是空的,如果var为空则返回TRUE3.2isset()isset--检查变量是否设置说明boolisset(mixedvar[,mixedvar[,...]])如果返回TRUEvar存在,否则返回FALSE。如果一个变量已经被unset()释放,它将不再是isset()。使用isset()测试变量是否为NULL将返回FALSE。另请注意,NULL字节(“0”)不等同于PHP的NULL常量。注意:如果变量不存在(或者unset()释放一个变量后),isset()和empty()不会报错;is_null(),is_numeric(),if会报错is_numeric检查变量是数字还是一串数字;is_null正是isset的逆运算结果,我们可以看成是!isset,是逆运算的问题。警告:isset()只能与变量一起使用,因为传递任何其他参数将导致解析错误。如果要检查常量是否已设置,可以使用defined()函数。用法:注意defined(""),如果没有双引号,会警告:undefinedconstantwebsiteif(defined("website")){echo"true";}else{echo"false";}3.30,'',nullif(''==null&&''==0&&null==0&&0=='0')echo'if';if(''=='0'||null=='0')回声'if2';结论:'',null,0,'0'彼此相等;'',null不等于'0'我的博客会同步到腾讯云+社区,诚邀大家加入:https://cloud.tencent.com/dev...
