Heim > Backend-Entwicklung > PHP-Tutorial > 10 Interviewfragen zu PHP

10 Interviewfragen zu PHP

不言
Freigeben: 2023-03-23 13:28:01
Original
1519 Leute haben es durchsucht

Dieser Artikel teilt Ihnen den Inhalt von 10 Interviewfragen zu PHP mit. Freunde in Not können sich darauf beziehen


Q1


Die erste Frage betrifft 弱类型

  1. $str1 ='yabadabadoo';
    $str2 ='yaba';
    if(strpos($str1,$str2)){
    echo"\"". $str1 ."\" contains \"". $str2 ."\"";
    }else{
    echo"\"". $str1 ."\" does not contain \"". $str2 ."\"";
    }
    Nach dem Login kopieren

Ausgabeergebnis der korrekten Operation:

  1. <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 gibt die Zeichenfolge str2 an der Position von str1 zurück. Wenn sie nicht gefunden wird, wird tatsächlich false zurückgegeben Dieses Mal wird 0 zurückgegeben und 0 wird auch in der if-Anweisung als falsch behandelt, daher müssen wir eine Typbeurteilung für false vornehmen. Der korrekte Code lautet wie folgt:

  1. $str1 =&#39;yabadabadoo&#39;;
    $str2 =&#39;yaba&#39;;
    if(strpos($str1,$str2)!==false){
    echo"\"". $str1 ."\" contains \"". $str2 ."\"";
    }else{
    echo"\"". $str1 ."\" does not contain \"". $str2 ."\"";
    }
    Nach dem Login kopieren

Es ist zu beachten, dass wir !== in PHP und JS verwenden. = ! ist strenger als == und erfordert konsistente Datentypen.

Q2

Was wird das Ausgabeergebnis unten sein?

  1. $x =5;
    echo $x;
    echo"<br />";
    echo $x+++$x++;
    echo"<br />";
    echo $x;
    echo"<br />";
    echo $x---$x--;
    echo"<br />";
    echo $x;
    Nach dem Login kopieren

Das tatsächliche Laufergebnis ist

  1. <span class="lit">5</span>

  2. <span class="lit">11</span>

  3. <span class="lit">7</span>

  4. <span class="lit">1</span>

  5. <span class="lit">5</span>

In Bezug auf $x++ und $x-- ist dieses Problem tatsächlich sehr einfach. Wir müssen uns nur daran erinnern, dass $x++ den neuesten Wert verwendet und ihn dann erhöht. Die Priorität des

-Operators ++ ist deutlich höher als die von +, daher wird zuerst ++ und dann + ausgeführt. In Bezug auf die Priorität von Operatoren können wir manchmal Klammern verwenden, um das Verständnis unseres Programms zu verbessern. Schließlich wird Code nicht nur zur Ausführung verwendet, sondern auch zur Verbesserung der Effizienz.

Q3

Über Variablenreferenzen;

  1. $a =&#39;1&#39;;
    $b =&$a;
    $b ="2$b";
    Nach dem Login kopieren

Könnten Sie mir bitte die Werte von <🎜 mitteilen? > und $a Für den Teil $b

fällt mir als Erstes

ein. Hier ist $a=&#39;1&#39; $b=&#39;21&#39; ein Verweis auf die Variable $b=&$a statt einer direkten Zuweisung. $b

Q4

下面是true还是false

var_dump(0123==123);
var_dump(&#39;0123&#39;==123);
var_dump(&#39;0123&#39;===123);
var_dump(0123 == 123);// false,PHP会默认把0123当作8进制来处理,实际转化为10进制就是83,显然这不是相等的。
var_dump(&#39;0123&#39; == 123);// true这里php会非常有趣的将&#39;0123&#39;转换成一个数字而且默认去掉了前面的0也就是123==123
var_dump(&#39;0123&#39; === 123);// false很显然上面的问题已经说过了数字和字符串类型不一致。
Nach dem Login kopieren

Q5

下面的代码有什么问题吗?输出会是什么,怎样修复它

  1. $referenceTable =array();
    $referenceTable[&#39;val1&#39;]=array(1,2);
    $referenceTable[&#39;val2&#39;]=3;
    $referenceTable[&#39;val3&#39;]=array(4,5);
    $testArray =array();
    $testArray = array_merge($testArray, $referenceTable[&#39;val1&#39;]);
    var_dump($testArray);
    $testArray = array_merge($testArray, $referenceTable[&#39;val2&#39;]);
    var_dump($testArray);
    $testArray = array_merge($testArray, $referenceTable[&#39;val3&#39;]);
    var_dump($testArray);
    Nach dem Login kopieren

实际输出如下:

  1. array(2){[0]=>int(<span class="lit">1</span>)[<span class="lit">1</span>]=>int(2)}

  2. <span class="pln">NULL</span>

  3. <span class="pln">NULL</span>

运行的时候你或许还能看到下面的警告

  1. <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>

  2. Warning: array_merge():Argument#<span class="lit">1</span>isnot an array

array_merge需要传入的参数都是数组,如果不是,则会返回null。 你可以这样修改

  1. <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">&#39;val1&#39;</span><span class="pun">]);</span>

  2. <span class="pln">var_dump</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">);</span>

  3. <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">&#39;val2&#39;</span><span class="pun">]);</span>

  4. <span class="pln">var_dump</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">);</span>

  5. <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">&#39;val3&#39;</span><span class="pun">]);</span>

  6. <span class="pln">var_dump</span><span class="pun">(</span><span class="pln">$testArray</span><span class="pun">);</span>

Q6

$x应该是输出什么?

  1. $x =trueandfalse;
    var_dump($x);
    Nach dem Login kopieren

部分同学或许会第一时间想到false,实际上这里依旧是强调运算符的优先级,= 会比 and级别高点,因此等同下面的代码

  1. <span class="pln">$x </span><span class="pun">=</span><span class="kwd">true</span><span class="pun">;</span>

  2. <span class="kwd">true</span><span class="kwd">and</span><span class="kwd">false</span>

答案显而易见。

Q7

经过下面的运算 $x的值应该是多少?

  1. $x =3+"15%"+"$25"
    Nach dem Login kopieren

答案是18,PHP是会根据上下文实现类型的自动转换

上面的代码我们可以这样理解,如果我们在与字符串进行数学运算,实际php会尽可能将字符串中的数组进行转换,如果是数字开头的话则转换成改数字比如"15%"会变成15,如果不是数字开头则会变成0; 上面的运算类似下面 :

  1. <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)又会返回什么结果?

  1. $text =&#39;John &#39;;
    $text[10]=&#39;Doe&#39;;
    Nach dem Login kopieren

上面代码执行完毕后 $text = "John D"(John后面会有连续的5个空格) strlen($text)会返回11

$text[10] = "Doe"给某个字符串具体的某个位置具体字符时候,实际只会把D赋给$text. 虽然$text才开始只有5个自负长度,但是php会默认填充空格。这和别的语言有些差别。

Q9

下面的输出结果会是什么

  1. $v =1;
    $m =2;
    $l =3;
    if( $l > $m > $v){
    echo"yes";
    }else{
    echo"no";
    }
    Nach dem Login kopieren

实际的输出是"no",只要仔细分析就不难得出

$l>$m 会转换成1 ,则这个时候再和$m比较。

Q10

执行下面代码$x会变成什么值呢?

$x = NULL;
if(&#39;0xFF&#39;==255){
$x =(int)&#39;0xFF&#39;;
}
Nach dem Login kopieren
  1. 实际的运行结果是

  2. $x=0
  3. 而不是255.


首先'oxFF' == 255我们好判断,会进行转换将16进制数字转换成10进制数字,0xff -> 255.

PHP使用is_numeric_string 判断字符串是否包含十六进制数字然后进行转换。

但是$x = (int)'0xFF';是否也会变成255呢?显然不是,将一个字符串进行强制类型转换实际上用的是convert_to_long,它实际上是将字符串从左向右进行转换,遇到非数字字符则停止。因此0xFF到x就停止了。所以$x=0

相关推荐:

php面试必问的面试问题

php面试题总结分享

PHP面试题目整理分享

Das obige ist der detaillierte Inhalt von10 Interviewfragen zu PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage