首页 开发编程 正文

怎么判断php数组为空的

$a=array('name'=>2、PHP如何判断字符串是否标准JSON?还是使用PHP内置的json_decode函数,该函数接受一个JSON编码的字符串并且把它转换为PHP变量。int$options=0]]])除了第一个字符串类型的$json必填之外,functionisJson($string){json_decode...

怎么判断php数组为空的,php获取数组键名和键值?

直接用键名获取,比如:$a = array('name'=>'admin');你知道键名是name,那么直接输出:echo $a['name']就行了。

PHP

PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。

PHP如何判断字符串是否标准JSON?

引言

在MYSQL 5.6及以下没有 JSON 这个字段类型的时候,我们还只能用字符串存储数组,对象,这些结构数据;甚至有直接将序列化的对象存库的,都是无奈之举。

编程中也时不时对接口进行json_encode / json_decode。那么如果所得的字符串不是标准的格式,有什么办法快速检测吗?

本文就来说一说。

学习时间

最快的办法,还是使用PHP内置的 json_decode 函数,对于此函数的参数和返回值,我们需要认真地分析。

该函数接受一个 JSON 编码的字符串并且把它转换为 PHP 变量。函数结构:

mixed json_decode( string $json[, bool $assoc = false[, int $depth = 512[, int $options = 0]]] )

除了第一个字符串类型的$json必填之外,其他都是选填。如果我们定制功能,需要后面的参数也指定。比如,解码的字符串解析为关联数组,那么就指定 $assoc = true。

考虑到兼容性的要求,$json 传入的字符串,必须是 UTF-8 编码格式。

我们试着编写一个助手函数,用于判断字符串是否标准的json格式:

function isJson($string) { json_decode($string); return (json_last_error() == JSON_ERROR_NONE); }

这个方法使用了2个函数,和1个常量。其中 json_decode 是对字符串解码暂且不说。json_last_error 函数,如果有返回值,则是 JSON 编码解码时最后发生的错误。

JSON_ERROR_NONE 是无错误,=0。该句判断没有错误则是标准格式,返回 true;否则返回 false。

深入学习

其实上面的代码对于 json 加解码过程中的错误判断还是比较粗糙的。有一位小哥不嫌繁琐,手动拼装了详细的错误处理函数,非常实用。

使用上述函数进行测试:

$json = '[{"user_id":13,"username":"stack"},{"user_id":14,"username":"over"}]'; $output = json_validate($json); print_r($output);

输出内容如下:

这是正常的情况,json 格式完全正确。我们再测试一个不是规范格式的字符串。

$json = '{background-color:yellow;color:#000;padding:10px;width:650px;}'; $output = json_validate($json); print_r($output);

输出错误信息:

Syntax error, malformed JSON.

万能的正则

跟字符串打交道,正则表达式几乎可以做一切你想要的结果。json 字符串也一样,据文档所说,使用正则表达式判断JSON格式,稳定有效,而且速度还很快。

下面这个正则表达式您拿小本本记好了,一模一样地抄下来用就可以了。

return !preg_match('/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/', preg_replace('/"(\\.|[^"\\\\])*"/', '', $json_string));

写在最后

如果考虑程序的可读性,和可维护性,使用 json_decode 函数的判断无疑更直观,大家也更熟悉。然而正则表达式所体现出的高效也是不容小觑的。

Happy coding :_)

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

php查询内存信息操作示例?

查看当前内存使用情况使用:memory_get_usage()函数。

查看内存使用峰值:memory_get_peak_usage()函数。

<?php

header("Content-Type:text/html;charset=utf-8");

/**

* 格式化字节大小

* @param number $size 字节数

* @param string $delimiter 数字和单位分隔符

* @return string 格式化后的带单位的大小

*/

function format_bytes($size, $delimiter = '') {

$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');

for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;

return round($size, 2) . $delimiter ." ".$units[$i];

}

echo "内存初始状态:".format_bytes(memory_get_usage());

echo "<hr/>";

echo "开始使用内存<br/>";

//使用内存

for($i = 0;$i < 100000;$i++){

$array[] = md5($i);

}

echo "内存状态:".format_bytes(memory_get_usage())."<br/>";

echo "删除一半的内存<br/>";

//删除一半的内存

for($i = 0;$i < 100000;$i++){

unset($array[$i]);

}

echo "最终内存状态:".format_bytes(memory_get_usage());

echo "<hr/>";

echo "内存峰值状态:".format_bytes(memory_get_peak_usage());

执行结果:

内存初始状态:65.27 KB

开始使用内存

内存状态:12.01 MB

删除一半的内存

最终内存状态:577.52 KB

内存峰值状态:12.01 MB

php数组很大如何进行条件筛选?

使用PHP自带的array_filter() 函数可以进行条件筛选。1.可以使用PHP自带的array_filter()函数来进行筛选。2.array_filter()函数可以按照指定回调函数的条件对数组元素进行过滤。回调函数的返回值为true/false,最后返回一个过滤后的新数组。3.除了array_filter()函数,还有其他可以进行数组筛选的函数,如array_reduce()、array_walk()、array_map()等函数,可以根据需要进行选择。

PHP会用到什么数据结构和算法?

看到有人回答说PHP用不到数据结构和算法,这种程序员一般走不远

数据结构和算法是PHPer深入底层,高级开发者必学的技能

我们经常使用PHP数组,PHP数组不仅可以foreach的方式遍历,又能通过key-value的方式访问,我们都觉得很便利,其实PHP的数组,是个HashTable,这仅仅是数据结构中的一个知识点而已

链表、二叉树、哈希、排序算法等,掌握它们能让你对程序的运作原理有更深的理解。学好数据结构可以更好地掌握原理层,又可以促进我们对程序的优化和思考,采用更节省系统资源的方式完成我们的业务需求。

为了解决大家进阶的难题,我准备了一套中高级进阶学习教程还可加入大牛学习圈子,分享数据结构算法、tp,laravel,Swoole,swoft微服务等教程,各种大牛都是3-8年PHP开发者,每天还有12年的架构师做讲解,助你进阶中高级PHP程序员,增值涨薪!需要可关注本头条号,并且发送私信关键词:PHP

想要进阶PHP中高级、架构师的程序员赶紧来学习,提升自己吧!!!!

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