PHP以Json格式导出Mysql数据库的特殊要求

以下是mysql数据库的某表结构和其第一条数据『字段名称为汉字』

序号产品详情产品图片动作要领图示价格厂家名称厂家地址联系电话产品链接产品介绍使用说明
1跑步机1.jpg2.jpg#3.jpg#4.jpg20元厂家名称厂家地址联系电话网址a跑步机的产品介绍文字跑步机的使用说明

以下是现有PHP代码,用于导出上表内容为json格式

$columns = array(
    array( 'db' => '序号', 'dt' => 0 ),
    array( 'db' => '产品详情',  'dt' => 1 ),
    array( 'db' => '产品图片',   'dt' => 2 ),
    array( 'db' => '动作要领图示',     'dt' => 3 ),
    array( 'db' => '价格', 'dt' => 4 ),
    array( 'db' => '厂家名称',  'dt' => 5 ),
    array( 'db' => '厂家地址',   'dt' => 6 ),
    array( 'db' => '联系电话',     'dt' => 7 ),
    array( 'db' => '产品名称',   'dt' => 8 ),
    array( 'db' => '产品介绍',     'dt' => 9 ),
    array( 'db' => '使用说明',   'dt' => 10 ),
);
echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

导出的json数据如下:

{
    "data": [
    [
    1,
    "跑步机",
    "1.jpg",
    "2.jpg#3.jpg#4.jpg",
    "20元",
    "厂家名称",
    "厂家地址",
    "联系电话",
    "网址a",
    "跑步机的产品介绍文字",
    "跑步机的使用说明"
    ]
    ]
}

需求:修改上述PHP代码,导出如下格式的json

{
    "data": [
    [
     1,
      "<span class='tooltips' data-title='跑步机' data-content='<B>生产日期:</B>2020/04/24<br><B>出厂日期:</B>2020/05/24<br><B>规格:</B>20KG<br>' data-placement='right'>产品详情</span>",
      "<div class='imgs' data-imgurl='l.jpg'><a data-fancybox='Image' class='fancybox-caption__body' data-caption='跑步机<br>跑步机的产品介绍文字' href='l.jpg'>产品图片</a></div>",
      "<a data-fancybox='sample-image' class='fancybox-caption__body' data-caption='跑步机<br><br>跑步机的产品介绍文字<span>跑步机的使用说明</span>' href='2.jpg'>动作要领<img class='smallpic' src='2.jpg' /></a><a data-fancybox='sample-image' class='fancybox-caption__body' data-caption='跑步机<br><br>跑步机的产品介绍文字<span>跑步机的使用说明</span>' href='3.jpg'>动作要领<img class='smallpic' src='3.jpg' /></a><a data-fancybox='sample-image' class='fancybox-caption__body' data-caption='跑步机<br><br>跑步机的产品介绍文字<span>跑步机的使用说明</span>' href='4.jpg'>动作要领<img class='smallpic' src='4.jpg' /></a>",
      "<a target='_blank' href='网址a'>产品链接</a>"
    ]
    ]
}

也许有人注意到了,这是datatables服务器端获取JSON的一段PHP代码,是的,的确是datatables的。所以,还希望有经验的师傅出手相助啊。此时此刻,授人以鱼比授人以渔要简单粗暴有效哈😂😂,谢谢您。

<?php
$columns = array(

    array( 'db' => '序号', 'dt' => 0 ),

    array( 'db' => '产品详情',  'dt' => 1 ),

    array( 'db' => '产品图片',   'dt' => 2 ),

    array( 'db' => '动作要领图示',     'dt' => 3 ),

    array( 'db' => '价格', 'dt' => 4 ),

    array( 'db' => '厂家名称',  'dt' => 5 ),

    array( 'db' => '厂家地址',   'dt' => 6 ),

    array( 'db' => '联系电话',     'dt' => 7 ),

    array( 'db' => '产品名称',   'dt' => 8 ),

    array( 'db' => '产品介绍',     'dt' => 9 ),

    array( 'db' => '使用说明',   'dt' => 10 ),

);
//echo json_encode( SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )); //只需要把这个改成以下的方式即可
$result_temp=SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns );
//然后循环
$result=array();
foreach($result_temp as $key=>$val){
    $fleimg=explode("#",$val['动作要领图示'])
    $imgstr='';
    foreach($fleimg as $k=>$v){
        $imgstr=$imgstr+"<a data-fancybox='sample-image' class='fancybox-caption__body' data-caption='".$val['产品介绍'].$val['使用说明']."' href='".$v."'>动作要领<img class='smallpic' src='".$v."' /></a>";
    }
    $result[]=array($val['序号'],  "<span class='tooltips' data-title='".$val['产品详情']."' data-content='".$val['产品介绍']."' data-placement='right'>产品详情</span>","<div class='imgs' data-imgurl='".$val['产品图片']."'><a data-fancybox='Image' class='fancybox-caption__body' data-caption='".$val['产品介绍']."' href='".$val['产品图片']."'>产品图片</a></div>",$imgstr,"<a target='_blank' href='网址a'>产品链接</a>")
}
echo json_encode($result);
?>

具体的,你再根据你自己的内容修改最后的显示结果吧,主要就是把json_encode( SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns ))分成
$result_temp= SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
和echo json_encode($result); 来进行处理

叫兽的这个回答并不能解决我的问题哈,我需要的是具体代码啊。。。不过还是谢谢你。

$columns = array(
    array( 'db' => '序号', 'dt' => 0 ),
    array( 'db' => '产品详情',  'dt' => 1 ),
    array( 'db' => '产品图片',   'dt' => 2 ),
    array( 'db' => '动作要领图示',     'dt' => 3 ),
    array( 'db' => '价格', 'dt' => 4 ),
    array( 'db' => '厂家名称',  'dt' => 5 ),
    array( 'db' => '厂家地址',   'dt' => 6 ),
    array( 'db' => '联系电话',     'dt' => 7 ),
    array( 'db' => '产品名称',   'dt' => 8 ),
    array( 'db' => '产品介绍',     'dt' => 9 ),
    array( 'db' => '使用说明',   'dt' => 10 ),
);
$arr = SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns );
$arr2 = [];
foreach ($arr as $v){
    $imgs = explode('#',$v[3]);
    $imgstr = '';
    for($i=0; $i<count($imgs); $i++){
        $imgstr .= "<a data-fancybox='sample-image' class='fancybox-caption__body' data-caption='{$v[0]}<br><br>{$v[9]}<span>{$v[10]}</span>' href='{$imgs[$i]}'>动作要领<img class='smallpic' src='{$imgs[$i]}' /></a>";
    }
    $newarr = [
        $v[0],
        "<span class='tooltips' data-title='{$v[1]}' data-content='<B>生产日期:</B>2020/04/24<br><B>出厂日期:</B>2020/05/24<br><B>规格:</B>20KG<br>' data-placement='right'>产品详情</span>",
        "<div class='imgs' data-imgurl='{$v[2]}'><a data-fancybox='Image' class='fancybox-caption__body' data-caption='{$v[0]}<br>{$v[9]}' href='{$v[1]}'>产品图片</a></div>",
        $imgstr,
        "<a target='_blank' href='{$v[8]}'>产品链接</a>"
    ];
    $arr2[] = $newarr;
}
echo json_encode($arr2);

这个按照正常的json输出数据就可以,对比一下你那部分json少了一些html标签,可以这样做,

PHP中嵌入HTML有多种方式,这里列出几种常用方式:

1、用echo输出HTML代码<?php

$int=rand(0,1);

if($int==1){
echo "

取到的随机数是1

";
}else{
echo "

取到的随机数不是1

";
}

?>

2、HTML代码中嵌入PHP

这样可以在大段大段的html代码的各个需要执行php的地方添加代码了。

Hello World
echo "Hello world!这是正文";

?>

3、使用(<<

这是在PHP168的模板代码中首次见到的<?php

print <<

{$label[deepblue_mainslide]}
{$label[deepblue_mainh1]}
{$label[deepblue_maint1]}
{$label[deepblue_maint2]}
$rs[name]

EOT;

?>

4、直接引用HTML文件进PHP中

一个HTML文件(test.html),主要代码为:

我是一段Html代码

使用php的include()函数将外部的HTML文件连接到PHP文件中<?php

include ("test.html");

?>

如果有帮助记得采纳哦!