php学习笔记之面向对象编程
代码如下 | 复制代码 |
class a { |
public 公有的:本类,子类,外部对象都可以调用
protected 受保护的:本类 子类,可以执行,外部对象不可以调用
private 私有的:只能本类执行,子类与外部对象都不可调用
代码如下 | 复制代码 |
<?php //两个数组的并集 $arr1 = array('a','b','c','d','e','f'); //$arr2 = array('a','a','e','a','p','a','a','e'); $arr2 = array('a','a','a','a'); $ilength = count($arr1); $jlength = count($arr2); /** * 两个数组的交集 * @param array $arr1 * @param array $arr2 * @autho zhaoya * @return array $arr */ function jiaoji($arr1,$arr2) { $ilength = count($arr1); $jlength = count($arr2); for($i=0;$i<$jlength;$i++) { for($j=0;$j<$ilength;$j++) { if($arr2[$i] == $arr1[$j]) { $arr[] = $arr2[$i]; break; } } } return $arr; } $arr3 = array(1,10,10,5,90,50,90); $arr4 = array(10,23,50,100,110,80); echo '<pre>'; $time1 = microtime(); /*$arr3 = __deleterepeat($arr3); $arr4 = __deleterepeat($arr4); $arr5 = bingji($arr3,$arr4); $arrsort = sort_array($arr5);*/ ///经过实验证明 先并集,然后在去除重复值 ,再排序,这样的速度会快一些 ///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点 $arr5 = bingji($arr3,$arr4); $arr5 = __deleterepeat($arr5); $arrsort = sort_array($arr5); $time2 = microtime(); echo $time1,'<hr>'; echo $time2,'<hr>'; echo $time2-$time1; print_r($arrsort); //去除重复值(第一种方法) //__deleterepeat($arr2); /** * 去除重复值(第一种方法) * @param array $array * @return array $tmparr * @author zhaoya */ function __deleterepeat($array) { $count = count($array); for($i = 0;$i<$count;$i++) { $change = false; for($j=$i+1;$j<$count;$j++) { if($array[$i] == $array[$j]) { $change=true; break; } } if($change==false) { $tmparr[] = $array[$i]; } } return $tmparr; } //去除重复的值 第二种方法 $arrayshift = _delrepeat($arr2); $tmparray=array(); /*** * 去除一维数组重复的值 * @param array $arr * @return array $tmparray; * @author zhaoya */ function _delrepeat($arr) { for($i=0;$i<count($arr);$i++) { if(inarray($arr[$i],$tmp)) { $tmparray[] = $arr[$i]; } } return $tmparray; } /** * 查找变量是否在这个数组里面 * @param integer $num * @param array $arr * @author zhaoya * @return boolean * */ function inarray($num,$arr) { if($arr) { for($i=0;$i<count($arr);$i++) { if($arr[$i] == $num) { return false; } return true; } } return true; } /** * 两个数组的并集 * @param array $arr1 数组1 * @param array $arr2 数组2 * @author zhaoya * @return array $arr1 */ function bingji($arr1,$arr2) { $ilength = count($arr1); $jlength = count($arr2); for($i=0;$i<$jlength;$i++) { $change=false; for($j=0;$j<$ilength;$j++) { if($arr2[$i] == $arr1[$j]) { $change = true; break; } } if($change == false) { $arr1[] = $arr2[$i]; } } return $arr1; } /** * 数组排序 从小到大 * @param array $arr 数组 * @author zhaoya * @return array $arr */ function sort_array($arr) { $length = count($arr); for($i=0;$i<$length;$i++) { for($j=$i+1;$j<$length;$j++) { if($arr[$i] > $arr[$j]) { $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; } } } return $arr; } ?> |
代码如下 | 复制代码 |
/** $t[$k]['reference'] = true;
$t[$k]['reference'] = true;
示例:
上面两种方法是将所有节点按id平摊到一个数组中,然后找到他们的 parent 或 children ,通过引用将 平摊的元素挂接到 parent 、children 下, 但被引用的元素依然存在于平摊的数组中,因此,在实际应用时,最好标记那些被引用的元素,以避免以他们为根开始遍历,导致重复。
foreach ($c as $key => $item) {
递归法,PHP 数组元素被删除后,数组游标会归零,因此在遍历过程中一些已经找到 “归宿” 的元素也不得不留在数组中,无法缩减后继元素的搜索范围:
function _findChildren($list, $p_id){ //数据层级化, print_r(_findChildren($mylist, 0)); |
1. 判断Email:
域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现 。 域名中字母不分大小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i;
/内容/i 构成一个不区分大小写的正则表达式;
基本规则如下
代码如下 | 复制代码 |
preg_match('/^[a-z0-9_-]+(.[_a-z0-9-]+)*@([_a-z0-9-]+.)+([a-z]{2} |aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/',$email) |
例1
代码如下 | 复制代码 |
<?php |
例2
代码如下 | 复制代码 |
<html> 结果 array(2) { [0]=> array(1) { [0]=> string(16) "test_123@126.net" } [1]=> array(0) { } } |
2. 判断Url:
例1
代码如下 | 复制代码 |
function is_url($str){ |
例2
php判断url地址并自动转换为超链接,在一段字符串中用正则表达式匹配出url,在将url转换为超链接,点击可访问地址
代码如下 | 复制代码 |
<?php ?> |
3. 判断手机号码:
例1
代码如下 | 复制代码 |
function is_mobile($str){ 例2 if(preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/",$mobilephone)){ |
如下面例子:
代码如下 | 复制代码 |
$foo[1]['a']['xx'] = 'bar 1'; |
如果要查找 bar 3 怎么进行查找呢。有三个结果,而这三个结果都要,看下面的函数:
-------------------------------------------------------------------------------------------------------------------------------
代码如下 | 复制代码 |
function array_search_re($needle, $haystack, $a=0, $nodes_temp=array()){ global $nodes_found; $a++; foreach ($haystack as $key1=>$value1) { $nodes_temp[$a] = $key1; if (is_array($value1)){ array_search_re($needle, $value1, $a, $nodes_temp); } else if ($value1 === $needle){ $nodes_found[] = $nodes_temp; } } return $nodes_found; } |
---------------------------------------------------------------------------------------------------------------------------------
这个函数就可以把上面要查找到的内容全部返回出键名来
代码如下 | 复制代码 |
$result = array_search_re('bar 3', $foo); print_r($result); |
输出结果为如下:
Array ( [0] => Array ( [1] => 2 [2] => a [3] => bb )
[1] => Array ( [1] => 3 [2] => c [3] => dd )
[2] => Array ( [1] => 3 [2] => f [3] => gg )
)
1 php搜索多维数组的键名
代码如下 | 复制代码 |
function array_search_key($needle, $haystack){ foreach ($haystack as $key1=>$value1) { return $nodes_found; print_r($result); |
输出结果为如下:
代码如下 | 复制代码 |
Array [1] => Array [2] => Array ) |
类似全文匹配!用二个循环 第一个循环keys 第二个模糊匹配 用函数strstr() 来解决
相关文章
- 这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
- 这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
如何在Spring WebFlux的任何地方获取Request对象
这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作
只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作。这就需要我们知道如何将jQuery对象和DOM的相互转换的方法。1...2015-10-30- js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一打印出来,具体代码如下: fu...2015-10-21
- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
- 1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
- 本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
- 这篇文章主要介绍了javascript self对象使用详解的相关资料,需要的朋友可以参考下...2016-10-20
ActiveX部件不能创建对象:dm.dmsoft代码:800A01AD
vbs调用插件报:ActiveX部件不能创建对象,代码:800A01AD,一般是因为病毒导致dll文件丢失或者64系统问题导致,需要的朋友可以参考下...2020-06-30- 这篇文章主要为大家介绍了JavaScript事件对象,了解JavaScript事件...2016-01-26
- 当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
- 这篇文章主要介绍了Xml中使用foreach遍历对象实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-04
解决SpringCloud Feign传对象参数调用失败的问题
这篇文章主要介绍了解决SpringCloud Feign传对象参数调用失败的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-24- 这篇文章主要介绍了JS实现简单面向对象的颜色选择器,以完整实例形式分析了JavaScript基于面向对象实现颜色选择器的具体步骤与实现技巧,需要的朋友可以参考下...2016-04-23
- 这篇文章主要介绍了vue - props 声明数组和对象操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30
- 这篇文章主要介绍了Javascript对象,特别为大家分享了对象题目的一个坑,提供了解题思路,感兴趣的小伙伴们可以参考一下...2015-12-24
- 这篇文章主要介绍了JavaScript Blob对象原理及用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-14
- 在web页面中,图片居左,内容居右排列,是非常常见的效果,它也就是媒体对象,它是一种抽象的样式,可以用来构建不同类型的组件。本文给大家介绍Bootstrap媒体对象的实现,感兴趣的朋友一起学习吧...2016-05-04