This article shares with you the content of 10 interview questions about PHP. Friends in need can refer to it
Q1
The first question is about weak type
$str1 ='yabadabadoo'; $str2 ='yaba'; if(strpos($str1,$str2)){ echo"\"". $str1 ."\" contains \"". $str2 ."\""; }else{ echo"\"". $str1 ."\" does not contain \"". $str2 ."\""; }
The output result of correct operation:
<span class="str">"yabadabadoo"</span><span class="pln"> does </span><span class="kwd">not</span><span class="pln"> contain </span><span class="str">"yaba"</span>
strpos
is the returned string str2
at the position of str1
. If not found, # will be returned. ##falseHowever, this time it actually returned
0 and 0 is also treated as false in the if statement, so we need to make a type judgment on false. The correct code is as follows:
$str1 ='yabadabadoo'; $str2 ='yaba'; if(strpos($str1,$str2)!==false){ echo"\"". $str1 ."\" contains \"". $str2 ."\""; }else{ echo"\"". $str1 ."\" does not contain \"". $str2 ."\""; }
!==, in php and JS
= ! is relative to
= = More stringent requirements require consistent data types.
$x =5; echo $x; echo"<br />"; echo $x+++$x++; echo"<br />"; echo $x; echo"<br />"; echo $x---$x--; echo"<br />"; echo $x;
5<span class="lit"></span>
11<span class="lit"></span>
##7
<span class="lit"></span>
1
<span class="lit"></span>
- ##5
About<span class="lit"></span>
$x
$x--This problem is actually very easy to encounter, we just need to remember
$x Use the most recent value before incrementing. The priority of the
operator,
, so it is executed first and then . Regarding the priority of operators, sometimes we can really use parentheses to make our program more intuitive to understand. After all, the code is not only used for execution. Sometimes the readability of the team may also improve efficiency. A sort of.
Q3
$a ='1'; $b =&$a; $b ="2$b";
- Excuse me $a
$ What is the value of b? The
part will immediately come to mind
$a='1' $b='21'
$b=&$a, here
$b is a reference to variable
$a rather than a direct assignment.
Q4
下面是true还是false
var_dump(0123==123); var_dump('0123'==123); var_dump('0123'===123); var_dump(0123 == 123);// false,PHP会默认把0123当作8进制来处理,实际转化为10进制就是83,显然这不是相等的。 var_dump('0123' == 123);// true这里php会非常有趣的将'0123'转换成一个数字而且默认去掉了前面的0也就是123==123 var_dump('0123' === 123);// false很显然上面的问题已经说过了数字和字符串类型不一致。
Q5
下面的代码有什么问题吗?输出会是什么,怎样修复它
$referenceTable =array(); $referenceTable['val1']=array(1,2); $referenceTable['val2']=3; $referenceTable['val3']=array(4,5); $testArray =array(); $testArray = array_merge($testArray, $referenceTable['val1']); var_dump($testArray); $testArray = array_merge($testArray, $referenceTable['val2']); var_dump($testArray); $testArray = array_merge($testArray, $referenceTable['val3']); var_dump($testArray);
实际输出如下:
<span class="kwd">array</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pun">{</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]=></span><span class="kwd">int</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]=></span><span class="kwd">int</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pun">}</span>
<span class="pln">NULL</span>
<span class="pln">NULL</span>
运行的时候你或许还能看到下面的警告
<span class="typ">Warning</span><span class="pun">:</span><span class="pln"> array_merge</span><span class="pun">():</span><span class="typ">Argument</span><span class="com">#</span><span class="lit">2</span><span class="kwd">is</span><span class="kwd">not</span><span class="pln"> an </span><span class="kwd">array</span>
<span class="typ">Warning</span><span class="pun">:</span><span class="pln"> array_merge</span><span class="pun">():</span><span class="typ">Argument</span><span class="com">#</span><span class="lit">1</span><span class="kwd">is</span><span class="kwd">not</span><span class="pln"> an </span><span class="kwd">array</span>
array_merge
需要传入的参数都是数组,如果不是,则会返回null。 你可以这样修改
<span class="pln">$testArray </span><span class="pun">=</span><span class="pln"> array_merge</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">,</span><span class="pun">(</span><span class="kwd">array</span><span class="pun">)</span><span class="pln">$referenceTable</span><span class="pun">[</span><span class="str">'val1'</span><span class="pun">]);</span>
<span class="pln">var_dump</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">);</span>
<span class="pln">$testArray </span><span class="pun">=</span><span class="pln"> array_merge</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">,</span><span class="pun">(</span><span class="kwd">array</span><span class="pun">)</span><span class="pln">$referenceTable</span><span class="pun">[</span><span class="str">'val2'</span><span class="pun">]);</span>
<span class="pln">var_dump</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">);</span>
<span class="pln">$testArray </span><span class="pun">=</span><span class="pln"> array_merge</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">,</span><span class="pun">(</span><span class="kwd">array</span><span class="pun">)</span><span class="pln">$referenceTable</span><span class="pun">[</span><span class="str">'val3'</span><span class="pun">]);</span>
<span class="pln">var_dump</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">);</span>
Q6
$x应该是输出什么?
$x =trueandfalse; var_dump($x);
部分同学或许会第一时间想到false,实际上这里依旧是强调运算符的优先级,= 会比 and级别高点,因此等同下面的代码
<span class="pln">$x </span><span class="pun">=</span><span class="kwd">true</span><span class="pun">;</span>
<span class="kwd">true</span><span class="kwd">and</span><span class="kwd">false</span>
答案显而易见。
Q7
经过下面的运算 $x的值应该是多少?
$x =3+"15%"+"$25"
答案是18
,PHP是会根据上下文实现类型的自动转换
上面的代码我们可以这样理解,如果我们在与字符串进行数学运算,实际php会尽可能将字符串中的数组进行转换,如果是数字开头的话则转换成改数字比如"15%"会变成15,如果不是数字开头则会变成0; 上面的运算类似下面 :
<span class="pln">$x </span><span class="pun">=</span><span class="lit">3</span><span class="pun">+</span><span class="lit">15</span><span class="pun">+</span><span class="lit">0</span>
Q8
运行下面的代码,$text
的值是多少?strlen($text)
又会返回什么结果?
$text ='John '; $text[10]='Doe';
上面代码执行完毕后 $text = "John D"
(John后面会有连续的5个空格) strlen($text)
会返回11
$text[10] = "Doe"
给某个字符串具体的某个位置具体字符时候,实际只会把D赋给$text
. 虽然$text
才开始只有5个自负长度,但是php会默认填充空格。这和别的语言有些差别。
Q9
下面的输出结果会是什么
$v =1; $m =2; $l =3; if( $l > $m > $v){ echo"yes"; }else{ echo"no"; }
实际的输出是"no",只要仔细分析就不难得出
$l>$m
会转换成1 ,则这个时候再和$m比较。
Q10
执行下面代码$x
会变成什么值呢?
$x = NULL; if('0xFF'==255){ $x =(int)'0xFF'; }
实际的运行结果是
而不是255.
$x=0
首先'oxFF' == 255
我们好判断,会进行转换将16进制数字转换成10进制数字,0xff -> 255.
PHP使用is_numeric_string
判断字符串是否包含十六进制数字然后进行转换。
但是$x = (int)'0xFF';
是否也会变成255呢?显然不是,将一个字符串进行强制类型转换实际上用的是convert_to_long
,它实际上是将字符串从左向右进行转换,遇到非数字字符则停止。因此0xFF
到x就停止了。所以$x=0
相关推荐:
The above is the detailed content of 10 interview questions about PHP. For more information, please follow other related articles on the PHP Chinese website!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Atom editor mac version download
The most popular open source editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Dreamweaver CS6
Visual web development tools
