画江湖之面试篇 [第四篇] tip:有些事情不去亲自去经历~很难明白里面的道理~代码也如此~要多敲

krisji 带你分析以往php面试题,各位小伙伴们赶紧上车咯~ 

第一题:写出以下代码输出的结果?

这道题呢?主要考察你对PHP的引用的理解

<?php
  $data=array('a','b','c');
  foreach($data as $key=>$value){
       $value=&$data[$key];
  }
问题1:程序执行时,每一次循环结束后变量$data的值是什么?请解释。
问题2:程序执行完后,变量$data的值是什么?请解释。
//第一次遍历 结果还是 【a,b,c】
//第二次遍历
$data[0]='a';//第一次遍历的时候$data[0]=a
$val=&$data[0];//这边已经把$data[0]引用指向$val 第一次遍历以后
$val=b //现在$val 一旦变了 那么$data[0]也就改变了 所以变成$data[0]=b
$data=[b,b,c];//最后结果变成了
//第三次遍历
$data[1]=b;//第二次遍历的时候$data[1]变成了b
$val=&$data[1];//第二次遍历的时候$val的引用变成了$data[1]
$val=c;//所以这边$val变成了c 那么$data[1]也就变成了c
$data=['b','c','c']//最后结果变成了
//最后的$data的结果
【b,c,c】

第二题:实现不使用第 3 个变量,交换$a、$b 的值,$a、$b 的初始值自己定

这道题呢?主要考察你对PHP的基础的理解

$a="linux";//定义$a的变量
$b="php";//定义$b的变量
$b=array($a,$b);//定义一个$b的数组 并没有第三个变量哦
$a=$b[1];//把$a变成$b数组的第二个值 这边交换了
$b=$b[0];//再把$b变成$b数组的第一个值 这边也交换完成了
echo $a;
echo "<br>";
echo $b;
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

第一题代码有误:

  • foreach 中的 $value$val 变量名不一致
  • $val = &$data[$key] 缺少分号
5年前 评论
guanhui07

list?

5年前 评论
$a = 1;
$b = 2;
list($b, $a) = array($a, $b);

第二题这样写也ok

5年前 评论

@qf-Z 我记得我当时做这道题的时候,就是这样子写的。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!