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 '
';
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,然后直接使用:

decode($str);
?>

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

decode($str);
?>

你可能感兴趣的:(php,知识点)