首页 开发编程 正文

php遍历数组怎么看

2、PHP获取数组最后一个值;array_pop弹出并返回array数组的最后一个单元。使用array_slice截取数组$array倒数第一个元素,$x=array_pop((array_slice($array。...

php遍历数组怎么看,php怎么通过地址去获取一个网页的标题title里面的内容?

用正则表达式技术可以实现,代码如下:.*/';$a= array();$b=preg_match($regex,$f,$a);echo(trim($a[0],"

"));?>

PHP获取数组最后一个值?

引言

我们对于 PHP 的数组操作乐此不疲,为什么?因为 PHP 编程你几乎时时刻刻都在于数组打交道,对于数组的操作熟练程度,很大一部分因素关系着代码的优劣。

今天我们来说说,如何获取数组的最后一个元素,并且不删除它。

不要小看这个需求,没准儿你还做不对呢 :)

学习时间

如果你首先想到了 array_pop,那很不幸,这个函数可以获取最后一个元素,却把数组更改了。

array_pop 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。 此外如果被调用不是一个数则会产生一个 Warning。

这显然不是我们要的结果。

其实实现一个需求的方法是多种多样的,我们尝试使用 10 种不同的办法,来做到这一点。

$x = array_values(array_slice($array, -1))[0]

第一种,使用 array_slice 截取数组 $array 倒数第一个元素。返回的是一个数组。然后使用 array_values 重新编排索引值。因为数组只有一个元素,那么索引值必然是 0。原数组 $array 毫发无损。

$x = array_slice($array, -1)[0];

第二种方法没有考虑关联数组的情况,有可能索引 0 不存在。所以容错性不好。

$x = array_pop((array_slice($array, -1)));

第三种方法,终于用到了 array_pop。不过是在 array_slice 阶段的数组上使用。

$x = array_pop((array_slice($array, -1, 1)));

第四种方法,简直是有魔性了,比第三种办法相比,只是在 array_slice 截断的长度手动指定为 1。

$x = end($array); reset($array);

第五种方法,用到数组指针了。end 返回最后一个元素。然后需要手动恢复指针位置到头部,所以调用了一次 reset 函数。本方法有可能返回关联数组,而不能拿到值。

$x = end((array_values($array)));

第六种方法,严格地为了返回最后一个元素的值,使用 array_values 进行了索引重新编排。

$x = $array[count($array)-1];

第七种方法,直接使用索引了。肯定是假设数组都是默认递增索引的数组,所以 count 获取的长度才有效。该方法容错性差。

$keys = array_keys($array); $x = $array[$keys[count($keys)-1]];

第八种方法,是对第七种的不足的修复。

$x = $array[] = array_pop($array);

第九种方法,我们需要明白,使用连等复制,array_pop 弹出数组的最后一个元素后,同时赋值给 $x。这没问题。赋值给原数组 $array[],这会对关联数组重新排定索引,所以有副作用。

$x = $array[array_key_last($array)];

第十种,这种方法的容错性也极高,因为使用了 array_key_last,有效地考虑了关联数组的情况,而且结果也很取巧。这个方法很棒。但是只有 PHP 7.3 以上的版本才有。

写在最后

好了,大家好好消化一下上面10个方法的优劣,取长补短,深度学习吧。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

php怎么反向遍历一个数组?

把他倒序一次 foreach(array_reverse($a) as $i=>$v){ echo $v; }

php遍历数组怎么判断最后一次循环?

$array=array('a','b','c','d'); $count=count($array); foreach($arrayas$key=>$val){ if($key+1==$count){ echo'最后一次'; } }

PHP删除目录下所有的文件?

引言

作为服务器端编程语言,PHP当然具备了操作系统文件的能力。今天我们来说一下使用PHP如何删除某个目录下的所有文件。

今天我们从最简单的形式讨论,但目录下的操作。

学习时间

我们说PHP是一个函数库毫不为过,因为针对各种功能,它都封装了许多内置的函数,拿来用就可以了。而文件目录操作函数,我们推荐使用glob。

该函数的参数形式:

array glob( string $pattern[, int $flags = 0] )

用于寻找与模式匹配的文件路径。使用起来代码应该是这样的:

首先使用 glob 模式匹配出目录下所有文件,这会返回一个数组。然后遍历,再使用 is_file 函数判定是否文件类型,如果是则调用 unlink 函数删除。

逻辑大概就是这样子。在Linux操作系统下,上面的模式扫描不出来隐藏文件。如果要把隐藏文件扫描出来,需要修改一下匹配模式如下:

遍历和文件类型判断逻辑相同。

极简主义

我们知道解决问题,不会是一种单一的办法,我们总是有很多方式实现同样的需求。那么对于上述的代码,对于强迫症同学来说,还是写的有些拖沓了,要是一行能搞定就好了。

真的可以一样搞定。我们借助于PHP的内置函数遍历操作函数 array_map 可以轻松实现。代码如下:

是不是少了很多手动造轮子的粗糙感。但是,这个函数缺少了 is_file 判断,是有一定风险的。特别是回调使用 unlink 这样的删除操作,尤其需要注意。

把 glob 函数的返回值使用 (array) 进行强制类型转换,是为了防止出现返回 false,不能直接传递到 array_filter 进行过滤的缘故。

面向对象

写惯了JAVA的同学应该对类库的方法操作严重依赖不能自拔,PHP也是有配套OOP方法的,只是我们用的太少,没有系统地学习罢了。下面提贴出来一个 OOP 风格的代码来解决这个问题。

不做解释,因为用的太少。为什么?因为看看 $di $ri 对象实例的操作,还有最后 rmdir unlink 的函数操作,你终究明白,要做到真正的面向对象,还差得远呢!

共同努力吧~~

写在最后

很令人伤心,本想提供一个OOP的实现,还是被迫用了函数方法,我们已经尽力了。整体而言,函数操作和函数操作,更适合PHP流程处理。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

本文转载自互联网,如有侵权,联系删除