当前位置:首页 > PHP教程 > php数组 > 列表

php数组转Json的例子

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-13 10:19:51 浏览: 评论:0 

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

数组转Json,代码如下:

  1. <?php   
  2.  
  3. header("Content-Type: text/html; charset=utf-8");   
  4.  
  5.     
  6.  
  7. $mydb=mysql_connect("localhost","root","root");   
  8.  
  9. if (!$mydb){   
  10.  
  11.   die('Could not connect:'. mysql_error());   
  12.  
  13. }   
  14.  
  15.     
  16.  
  17. $db_<a href="/tags.php/select/" target="_blank">select</a>ed=mysql_select_db("mysql",$mydb);   
  18.  
  19. //$sql = "SELECT * from Person WHERE Lastname='Adams'";   
  20.  
  21. $sql="SELECT * from user";   
  22.  
  23. $result=mysql_query($sql,$mydb);   
  24.  
  25. //print_r(mysql_fetch_array($result));   
  26.  
  27.     
  28.  
  29.     
  30.  
  31. //处理输出数组格式   
  32.  
  33. //$db1=mysql_query("select * from `tb_info`");   
  34.  
  35. /*  
  36.  
  37. $arr=array();  
  38.  
  39. while($rows=mysql_fetch_array($db1)){  
  40.  
  41. $key=$rows['id']  
  42.  
  43. $arr[$key] = $rows['qucount']  
  44.  
  45.  
  46.  
  47. */   
  48.  
  49.     
  50.  
  51. /**************************************************************  
  52.  
  53.  *  
  54.  
  55.  *  使用特定function对数组中所有元素做处理  
  56.  
  57.  *  @param  string  &$array     要处理的字符串  
  58.  
  59.  *  @param  string  $function   要执行的函数  
  60.  
  61.  *  @return boolean $apply_to_keys_also     是否也应用到key上  
  62.  
  63.  *  @access public  
  64.  
  65.  *  
  66.  
  67.  *************************************************************/   
  68.  
  69. function arrayRecursive(&$array$function$apply_to_keys_also = false)   
  70.  
  71. {   
  72.  
  73.     static $recursive_counter = 0;   
  74.  
  75.     if (++$recursive_counter > 1000) {   
  76.  
  77.         die('possible deep recursion attack');   
  78.  
  79.     }   
  80.  
  81.     <a href="/tags.php/foreach/" target="_blank">foreach</a> ($array as $key => $value) {   
  82.  
  83.         if (is_array($value)) {   
  84.  
  85.             arrayRecursive($array[$key], $function$apply_to_keys_also);   
  86.  
  87.         } else {   
  88.  
  89.             $array[$key] = $function($value);   
  90.  
  91.         }   
  92.  
  93.        
  94.  
  95.         if ($apply_to_keys_also && is_string($key)) {   
  96.  
  97.             $new_key = $function($key);   
  98.  
  99.             if ($new_key != $key) {   
  100.  
  101.                 $array[$new_key] = $array[$key];   
  102.  
  103.                 unset($array[$key]);   
  104.  
  105.             }   
  106.  
  107.         }   
  108.  
  109.     }   
  110.  
  111.     $recursive_counter--;   
  112.  
  113. }   
  114.  
  115.        
  116.  
  117. /**************************************************************  
  118.  
  119.  *  
  120.  
  121.  *  将数组转换为JSON字符串(兼容中文)  
  122.  
  123.  *  @param  array   $array      要转换的数组  
  124.  
  125.  *  @return string      转换得到的json字符串  
  126.  
  127.  *  @access public  
  128.  
  129.  *  
  130.  
  131.  *************************************************************/   
  132.  
  133. function JSON($array) {   
  134.  
  135.     arrayRecursive($array'urlencode', true);   
  136.  
  137.     $json = json_encode($array);   
  138.  
  139.     return urldecode($json);   
  140.  
  141. }   
  142.  
  143.     
  144.  
  145.      
  146.  
  147.     
  148.  
  149. $array = array   
  150.  
  151.        (   
  152.  
  153.           'Name'=>'希亚',   
  154.  
  155.           'Age'=>20   
  156.  
  157.        );   
  158.  
  159.     
  160.  
  161. /*  
  162.  
  163. $array=array (  
  164.  
  165.   0 =>   
  166.  
  167.   array (  
  168.  
  169.     'icon' =>   
  170.  
  171.     array (  
  172.  
  173.       'hasPhoto' => '0',  
  174.  
  175.       'photoPath' => '/resources/v20/images/boy.png',  
  176.  
  177.     ),  
  178.  
  179.     'age' => '24',  
  180.  
  181.     'name' => '男士',  
  182.  
  183.     'province' => '北京',  
  184.  
  185.     'lottery' => '100元的爱玛电动车代金券',  
  186.  
  187.     'mobile' => '',  
  188.  
  189.   ),  
  190.  
  191.   1 =>   
  192.  
  193.   array (  
  194.  
  195.     'icon' =>   
  196.  
  197.     array (  
  198.  
  199.       'hasPhoto' => '0',  
  200.  
  201.       'photoPath' => '/resources/v20/images/boy.png',  
  202.  
  203.     ),  
  204.  
  205.     'age' => '24',  
  206.  
  207.     'name' => '男士',  
  208.  
  209.     'province' => '北京',  
  210.  
  211.     'lottery' => '100元的爱玛电动车代金券',  
  212.  
  213.     'mobile' => '',  
  214.  
  215.   ),  
  216.  
  217.   2 =>   
  218.  
  219.   array (  
  220.  
  221.     'icon' =>   
  222.  
  223.     array (  
  224.  
  225.       'hasPhoto' => '0',  
  226.  
  227.       'photoPath' => '/resources/v20/images/boy.png',  
  228.  
  229.     ),  
  230.  
  231.     'age' => '25',  
  232.  
  233.     'name' => '男士',  
  234.  
  235.     'province' => '上海',  
  236.  
  237.     'lottery' => '100元的爱玛电动车代金券',  
  238.  
  239.     'mobile' => '',  
  240.  
  241.   ),  
  242.  
  243.   3 =>   
  244.  
  245.   array (  
  246.  
  247.     'icon' =>   
  248.  
  249.     array (  
  250.  
  251.       'hasPhoto' => '0',  
  252.  
  253.       'photoPath' => '/resources/v20/images/boy.png',  
  254.  
  255.     ),  
  256.  
  257.     'age' => '24',  
  258.  
  259.     'name' => '男士',  
  260.  
  261.     'province' => '北京',  
  262.  
  263.     'lottery' => '100元的爱玛电动车代金券',  
  264.  
  265.     'mobile' => '186****1046',  
  266.  
  267.   ),  
  268.  
  269.   4 =>   
  270.  
  271.   array (  
  272.  
  273.     'icon' =>   
  274.  
  275.     array (  
  276.  
  277.       'hasPhoto' => '0',  
  278.  
  279.       'photoPath' => '/resources/v20/images/boy.png',  
  280.  
  281.     ),  
  282.  
  283.     'age' => '24',  
  284.  
  285.     'name' => '男士',  
  286.  
  287.     'province' => '北京',  
  288.  
  289.     'lottery' => '200元的爱玛电动车代金券',  
  290.  
  291.     'mobile' => '186****1046',  
  292.  
  293.   ),  
  294.  
  295.   5 =>   
  296.  
  297.   array (  
  298.  
  299.     'icon' =>   
  300.  
  301.     array (  
  302.  
  303.       'hasPhoto' => '0',  
  304.  
  305.       'photoPath' => '/resources/v20/images/boy.png',  
  306.  
  307.     ),  
  308.  
  309.     'age' => '24',  
  310.  
  311.     'name' => '男士',  
  312.  
  313.     'province' => '北京',  
  314.  
  315.     'lottery' => '100元的爱玛电动车代金券',  
  316.  
  317.     'mobile' => '',  
  318.  
  319.   ),  
  320.  
  321.   6 =>   
  322.  
  323.   array (  
  324.  
  325.     'icon' =>   
  326.  
  327.     array (  
  328.  
  329.       'hasPhoto' => '0',  
  330.  
  331.       'photoPath' => '/resources/v20/images/boy.png',  
  332.  
  333.     ),  
  334.  
  335.     'age' => '24',  
  336.  
  337.     'name' => '男士',  
  338.  
  339.     'province' => '北京',  
  340.  
  341.     'lottery' => '100元的爱玛电动车代金券',  
  342.  
  343.     'mobile' => '',  
  344.  
  345.   ),  
  346.  
  347.   7 =>   
  348.  
  349.   array (  
  350.  
  351.     'icon' =>   
  352.  
  353.     array (  
  354.  
  355.       'hasPhoto' => '0',  
  356.  
  357.       'photoPath' => '/resources/v20/images/boy.png',  
  358.  
  359.     ),  
  360.  
  361.     'age' => '24',  
  362.  
  363.     'name' => '男士',  
  364.  
  365.     'province' => '北京',  
  366.  
  367.     'lottery' => '100元的爱玛电动车代金券',  
  368.  
  369.     'mobile' => '',  
  370.  
  371.   ),  
  372.  
  373.   8 =>   
  374.  
  375.   array (  
  376.  
  377.     'icon' =>   
  378.  
  379.     array (  
  380.  
  381.       'hasPhoto' => '0',  
  382.  
  383.       'photoPath' => '/resources/v20/images/boy.png',  
  384.  
  385.     ),  
  386.  
  387.     'age' => '24',  
  388.  
  389.     'name' => '男士',  
  390.  
  391.     'province' => '河南',  
  392.  
  393.     'lottery' => '100元的爱玛电动车代金券',  
  394.  
  395.     'mobile' => '',  
  396.  
  397.   ),  
  398.  
  399.   9 =>   
  400.  
  401.   array (  
  402.  
  403.     'icon' =>   
  404.  
  405.     array (  
  406.  
  407.       'hasPhoto' => '0',  
  408.  
  409.       'photoPath' => '/resources/v20/images/boy.png',  
  410.  
  411.     ),  
  412.  
  413.     'age' => '24',  
  414.  
  415.     'name' => '男士',  
  416.  
  417.     'province' => '北京',  
  418.  
  419.     'lottery' => '100元的爱玛电动车代金券',  
  420.  
  421.     'mobile' => '',  
  422.  
  423.   ),  
  424.  
  425.   10 =>   
  426.  
  427.   array (  
  428.  
  429.     'icon' =>   
  430.  
  431.     array (  
  432.  
  433.       'hasPhoto' => '1',  
  434.  
  435.       'photoPath' => '/201412/11/11/49/1418269782350A03EA57_c.jpg',  
  436.  
  437.     ),  
  438.  
  439.     'age' => '20',  
  440.  
  441.     'name' => '白日做梦',  
  442.  
  443.     'province' => '北京',  
  444.  
  445.     'lottery' => '100元的爱玛电动车代金券',  
  446.  
  447.     'mobile' => '',  
  448.  
  449.   ),  
  450.  
  451. );  
  452.  
  453. */   
  454.  
  455.     
  456.  
  457.       
  458.  
  459. echo JSON($array);   
  460.  
  461. ?> 

json对象转成,代码如下:

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

json_decode($json,true);

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

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

print_r(json_decode($json,true));

这样的json数据解析后就会成为下面这样的数组.

  1. Array  
  2. (  
  3.     [name] => zhangsan  
  4.     [age] => 20  
  5.     [sex] => nan  

数组转json 中文字符,代码如下:

  1. <?php 
  2. $josin=array
  3.      '0'=>array
  4.             'name'=>'四海一家'
  5.             'subname'=>'南阳店'
  6.             'agv'=>'5'
  7.             'add'=>'新街口地铁站E24号'
  8.             'tel'=>'13382041088'
  9.       ),  //开源软件:phpfensi.com 
  10.       '1'=>array
  11.             'name'=>'四海二家'
  12.             'subname'=>'南阳店'
  13.             'agv'=>'5'
  14.             'add'=>'新街口地铁站E24号'
  15.             'tel'=>'13382041088'
  16.       ), 
  17.            '2'=>array
  18.             'name'=>'四海三家'
  19.             'subname'=>'南阳店'
  20.             'agv'=>'5'
  21.             'add'=>'新街口地铁站E24号'
  22.             'tel'=>'13382041088'
  23.       ), 
  24.            '3'=>array
  25.             'name'=>'四海四家'
  26.             'subname'=>'南阳店'
  27.             'agv'=>'5'
  28.             'add'=>'新街口地铁站E24号'
  29.             'tel'=>'13382041088'
  30.       ), 
  31.            '4'=>array
  32.             'name'=>'四海五家'
  33.             'subname'=>'南阳店'
  34.             'agv'=>'5'
  35.             'add'=>'新街口地铁站E24号'
  36.             'tel'=>'13382041088'
  37.       ), 
  38.     
  39. ); 
  40. $k=JSON($josin); 
  41. echo $k
  42.    
  43.     /************************************************************** 
  44.      * 
  45.      *  使用特定function对数组中所有元素做处理 
  46.      *  @param  string  &$array     要处理的字符串 
  47.      *  @param  string  $function   要执行的函数 
  48.      *  @return boolean $apply_to_keys_also     是否也应用到key上 
  49.      *  @access public 
  50.      * 
  51.      *************************************************************/ 
  52.     function arrayRecursive(&$array$function$apply_to_keys_also = false) 
  53.     { 
  54.         static $recursive_counter = 0; 
  55.         if (++$recursive_counter > 1000) { 
  56.             die('possible deep recursion attack'); 
  57.         } 
  58.         foreach ($array as $key => $value) { 
  59.             if (is_array($value)) { 
  60.                 arrayRecursive($array[$key], $function$apply_to_keys_also); 
  61.             } else { 
  62.                 $array[$key] = $function($value); 
  63.             } 
  64.          
  65.             if ($apply_to_keys_also && is_string($key)) { 
  66.                 $new_key = $function($key); 
  67.                 if ($new_key != $key) { 
  68.                     $array[$new_key] = $array[$key]; 
  69.                     unset($array[$key]); 
  70.                 } 
  71.             } 
  72.         } 
  73.         $recursive_counter--; 
  74.     } 
  75.          
  76.     /************************************************************** 
  77.      * 
  78.      *  将数组转换为JSON字符串(兼容中文) 
  79.      *  @param  array   $array      要转换的数组 
  80.      *  @return string      转换得到的json字符串 
  81.      *  @access public 
  82.      * 
  83.      *************************************************************/ 
  84.     function JSON($array) { 
  85.         arrayRecursive($array'urlencode', true); 
  86.         $json = json_encode($array); 
  87.         return urldecode($json); 
  88.     } 
  89. ?>

Tags: php数组转Json Json

分享到: