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);
?>