Home > php教程 > PHP源码 > body text

php数组转Json的例子

WBOY
Release: 2016-06-08 17:20:31
Original
1755 people have browsed it

数组与Json格式其实是非常像了,我们可以利用相关的函数来进行相互转换的,下面来给各位整理一个从mysql读取数据之后再利用php函数转换成json回传,具体如下

<script>ec(2);</script>

数组转Json

<?php  

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

  

$mydb=mysql_connect("localhost","root","root");  

if (!$mydb){  

  die(&#39;Could not connect:&#39;. mysql_error());  

}  

  

$db_selected=mysql_select_db("mysql",$mydb);  

//$sql = "SELECT * from Person WHERE Lastname=&#39;Adams&#39;";  

$sql="SELECT * from user";  

$result=mysql_query($sql,$mydb);  

//print_r(mysql_fetch_array($result));  

  

  

//处理输出数组格式  

//$db1=mysql_query("select * from `tb_info`");  

/* 

$arr=array(); 

while($rows=mysql_fetch_array($db1)){ 

$key=$rows[&#39;id&#39;] 

$arr[$key] = $rows[&#39;qucount&#39;] 

} 

*/  

  

/************************************************************** 

 * 

 *  使用特定function对数组中所有元素做处理 

 *  @param  string  &$array     要处理的字符串 

 *  @param  string  $function   要执行的函数 

 *  @return boolean $apply_to_keys_also     是否也应用到key上 

 *  @access public 

 * 

 *************************************************************/  

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)  

{  

    static $recursive_counter = 0;  

    if (++$recursive_counter > 1000) {  

        die(&#39;possible deep recursion attack&#39;);  

    }  

    foreach ($array as $key => $value) {  

        if (is_array($value)) {  

            arrayRecursive($array[$key], $function, $apply_to_keys_also);  

        } else {  

            $array[$key] = $function($value);  

        }  

     

        if ($apply_to_keys_also && is_string($key)) {  

            $new_key = $function($key);  

            if ($new_key != $key) {  

                $array[$new_key] = $array[$key];  

                unset($array[$key]);  

            }  

        }  

    }  

    $recursive_counter--;  

}  

     

/************************************************************** 

 * 

 *  将数组转换为JSON字符串(兼容中文) 

 *  @param  array   $array      要转换的数组 

 *  @return string      转换得到的json字符串 

 *  @access public 

 * 

 *************************************************************/  

function JSON($array) {  

    arrayRecursive($array, &#39;urlencode&#39;, true);  

    $json = json_encode($array);  

    return urldecode($json);  

}  

  

   

  

$array = array  

       (  

          &#39;Name&#39;=>&#39;希亚&#39;,  

          &#39;Age&#39;=>20  

       );  

  

/* 

$array=array ( 

  0 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  1 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  2 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;25&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;上海&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  3 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;186****1046&#39;, 

  ), 

  4 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;200元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;186****1046&#39;, 

  ), 

  5 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  6 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  7 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  8 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;河南&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  9 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;0&#39;, 

      &#39;photoPath&#39; => &#39;/resources/v20/images/boy.png&#39;, 

    ), 

    &#39;age&#39; => &#39;24&#39;, 

    &#39;name&#39; => &#39;男士&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

  10 =>  

  array ( 

    &#39;icon&#39; =>  

    array ( 

      &#39;hasPhoto&#39; => &#39;1&#39;, 

      &#39;photoPath&#39; => &#39;/201412/11/11/49/1418269782350A03EA57_c.jpg&#39;, 

    ), 

    &#39;age&#39; => &#39;20&#39;, 

    &#39;name&#39; => &#39;白日做梦&#39;, 

    &#39;province&#39; => &#39;北京&#39;, 

    &#39;lottery&#39; => &#39;100元的爱玛电动车代金券&#39;, 

    &#39;mobile&#39; => &#39;&#39;, 

  ), 

); 

*/  

  

    

echo JSON($array);  

?>
Copy after login

json对象转成

普通数组 也就是 Array 的最简单方法还是 用 json_decode() 方法,只需要在后面多写一个参数就可以搞定

json_decode($json,true);
Copy after login

这样就可以将 json 转换成数组形式了,key 保持原来格式

$json = ’{“name”:”zhangsan”,”age”:20,”sex”:”nan”}’; 

print_r(json_decode($json,true));
Copy after login

这样的json数据解析后 就会成为下面这样的数组
Array
(
[name] => zhangsan
[age] => 20
[sex] => nan
)

数组转json 中文字符

<?php
$josin=array(
     &#39;0&#39;=>array(
            &#39;name&#39;=>&#39;四海一家&#39;,
            &#39;subname&#39;=>&#39;南阳店&#39;,
            &#39;agv&#39;=>&#39;5&#39;,
            &#39;add&#39;=>&#39;新街口地铁站E24号&#39;,
            &#39;tel&#39;=>&#39;13382041088&#39;,
      ),
      &#39;1&#39;=>array(
            &#39;name&#39;=>&#39;四海二家&#39;,
            &#39;subname&#39;=>&#39;南阳店&#39;,
            &#39;agv&#39;=>&#39;5&#39;,
            &#39;add&#39;=>&#39;新街口地铁站E24号&#39;,
            &#39;tel&#39;=>&#39;13382041088&#39;,
      ),
           &#39;2&#39;=>array(
            &#39;name&#39;=>&#39;四海三家&#39;,
            &#39;subname&#39;=>&#39;南阳店&#39;,
            &#39;agv&#39;=>&#39;5&#39;,
            &#39;add&#39;=>&#39;新街口地铁站E24号&#39;,
            &#39;tel&#39;=>&#39;13382041088&#39;,
      ),
           &#39;3&#39;=>array(
            &#39;name&#39;=>&#39;四海四家&#39;,
            &#39;subname&#39;=>&#39;南阳店&#39;,
            &#39;agv&#39;=>&#39;5&#39;,
            &#39;add&#39;=>&#39;新街口地铁站E24号&#39;,
            &#39;tel&#39;=>&#39;13382041088&#39;,
      ),
           &#39;4&#39;=>array(
            &#39;name&#39;=>&#39;四海五家&#39;,
            &#39;subname&#39;=>&#39;南阳店&#39;,
            &#39;agv&#39;=>&#39;5&#39;,
            &#39;add&#39;=>&#39;新街口地铁站E24号&#39;,
            &#39;tel&#39;=>&#39;13382041088&#39;,
      ),
  
);
$k=JSON($josin);
echo $k;
 
    /**************************************************************
     *
     *  使用特定function对数组中所有元素做处理
     *  @param  string  &$array     要处理的字符串
     *  @param  string  $function   要执行的函数
     *  @return boolean $apply_to_keys_also     是否也应用到key上
     *  @access public
     *
     *************************************************************/
    function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
    {
        static $recursive_counter = 0;
        if (++$recursive_counter > 1000) {
            die(&#39;possible deep recursion attack&#39;);
        }
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                arrayRecursive($array[$key], $function, $apply_to_keys_also);
            } else {
                $array[$key] = $function($value);
            }
       
            if ($apply_to_keys_also && is_string($key)) {
                $new_key = $function($key);
                if ($new_key != $key) {
                    $array[$new_key] = $array[$key];
                    unset($array[$key]);
                }
            }
        }
        $recursive_counter--;
    }
       
    /**************************************************************
     *
     *  将数组转换为JSON字符串(兼容中文)
     *  @param  array   $array      要转换的数组
     *  @return string      转换得到的json字符串
     *  @access public
     *
     *************************************************************/
    function JSON($array) {
        arrayRecursive($array, &#39;urlencode&#39;, true);
        $json = json_encode($array);
        return urldecode($json);
    }
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template