php 一些有用的函数

1.多维数组合并成一维数组
$arr = [
	[ '1','2','3','4','5','6'],
	['one','two','three','four','five','six']
];
$new_arr = call_user_func_array('array_merge', $arr);

echo '<pre>';
var_dump($new_arr);

array(12) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
  [3]=>
  string(1) "4"
  [4]=>
  string(1) "5"
  [5]=>
  string(1) "6"
  [6]=>
  string(3) "one"
  [7]=>
  string(3) "two"
  [8]=>
  string(5) "three"
  [9]=>
  string(4) "four"
  [10]=>
  string(4) "five"
  [11]=>
  string(3) "six"
}
2. 在 PHP 中如何解码 JSONP
function jsonp_decode($jsonp, $assoc = false) {
	if($jsonp[0] !== '[' && $jsonp[0] !== '{') {
		$jsonp = substr($jsonp, strpos($jsonp, '('));
	}
	return json_decode(trim($jsonp,'();'), $assoc);
}
//测试:
$jsonp = '({"a":1,"b":2,"c":3})';
$arr = jsonp_decode($jsonp, true);

var_dump($arr);die;

array(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) }
3. PHP 二维关联数组根据其中一个字段排序
function wpjam_array_multisort($array, $orderby, $order = SORT_ASC, $sort_flags = SORT_NUMERIC){
	$refer = array();

	foreach ($array as $key => $value) {
		$refer[$key] = $value[$orderby];
	}

	array_multisort($refer, $order, $sort_flags, $array);

	return $array;
}
4. PHP 中如何移除控制字符

在我们平时程序当中,如果字符串中出现了控制字符,json_decode 和 simplexml_load_string 这些函数就会失败,所以最好就是去掉,所以我写了一个移除控制字符的 PHP 函数:

function wpjam_strip_control_characters($str){
	return preg_replace('/[\x00-\x1F\x7F-\x9F]/u', '', $str);
}
5. PHP json_decode 无法解析,那就试试 Services_JSON

PHP 的 json_decode 函数不知道是有bug,还是考虑太少,常常会发生解析不出数据的情况,使用 json_last_error_msg() 函数大部分情况下可以获得下面的错误:
Control character error, possibly incorrectly encoded
但是 Google 了一圈,都没有办法去修正这个错误,后面咨询了牛逼闪闪的 Kingmax 师兄,他说:“json_decode经常会有东西解不出来的,应该用一个叫Sevice_JSON的类去解析,这个比较全能,帮你把特殊字符都处理好了”,试了下果然可以。

到这里直接下载 Services_JSON,然后直接使用:

<?php
include 'JSON.php';
$json = new Services_JSON();
$data = $json->decode($str);
?>

既可以了,如果想和 json_decode 的第二个参数一样,可以解析返回的数据为数组,那就要在 new Services_JSON 的时候加上这个参数 SERVICES_JSON_LOOSE_TYPE︰

<?php
include 'JSON.php';
$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
$data = $json->decode($str);
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值