奇怪的问题?php数组引用后值发生改变 2018-3-23

<?php $items = array('a','b','c');  foreach($items as &$item){     $item .= '4';  }  foreach($items as $item){     echo $item,PHP_EOL;  } 输出的结果是a4,b4,b4而非a4,bc4,c4为什么呢? 因为在第一个fro次循环最终结束后,$item的值为&items[2]。 而在第二个循环时,由于再次用了$item这个变量,会有变化: 第1次时,$item(即$itmes[2])的值成了$items[0],即a4,此时数组为('a4','b4','a4'); 第2次时,$item(即$items[2])的值成了$i...
浏览:1306 分类:练习 详请

用PHP如何实现startsWith() 2018-3-23

<?php function startsWith($haystack, $needle) { return $needle === "" || strpos($haystack, $needle) === 0; }
浏览:1679 分类:练习 详请

找出一组数据中差值分别为最多及最小的的两个数 2018-3-23

本题解题思想: 排序必然是第一步,排完序之后,数组两端的基本就是相差最大的一组数据。 而相差最小的,就要把相邻的两个数组依次去相减,最后找到结果最小的一组即是答案 <?php $r = [100,20,90,40,10,50,70,88,25.6,16]; foreach($r as &$v){ foreach($r as &$j){ if($v >= $j){ $tmp = $v; $v = $j; $j = $tmp; } } } print_r($r); $max_arr = [$r[0], $r[count($r)-1]]; echo 'max:',$r[0],'-' - $r[count($r)-1],'=',$r[0] - $r[count($r)-1]; echo PHP_EOL; $min = 0; unset($v); // ...
浏览:1716 分类:练习 详请

不使用+运算符,编写一个函数,将2个数字相加 2018-3-23

分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。 看到的这个题目,我的第一反应是傻眼了,四则运算都不能用,那还能用什么啊?可是问题总是要解决的,只能打开思路去思考各种可能性。首先我们可以分析人们是如何做十进制的加法的,比如是如何得出5+17=22这个结果的。实际上,我们可以分成三步的:第一步只做各位相加不进位,此时相加的结果是12(个位数5和7相加不要进位是2,十位数0和1相加结果是1);第二步做进位,5+7中有进位,进位的值是10;第三步把前面两个结果加起来,12+10的结果是22,刚好5+17=22。 前面我们就在想,求两数之和四则运算都不能用,那还能用什么啊?对呀,还能用什么呢?对数字做运算,除了四则运算之外,也就只剩下位运算了。位运算是针对二进制的,我们也就以二进制再来分析一下前面的三步走策略对...
浏览:1394 分类:练习 详请

InnoDB与Myisam的区别 2018-3-22

Myisam InnoDB 事务  不支持 支持 数据行锁定 不支持(只支持表锁) InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”  外键约束 不支持 支持 ...
浏览:1147 分类:练习 详请