GVKun编程网logo

如何在一个数组PHP中设置子json数组(php 数组 json)

2

以上就是给各位分享如何在一个数组PHP中设置子json数组,其中也会对php数组json进行解释,同时本文还将给你拓展json数组push的用法,当新增的为json空对象时,要修改成数组、json数组

以上就是给各位分享如何在一个数组PHP中设置子json数组,其中也会对php 数组 json进行解释,同时本文还将给你拓展json数组push的用法,当新增的为json空对象时,要修改成数组、json数组迭代并从json数组创建自己的数组列表、js处理json数组,如何将json数组按照要求进行分组,分成二维数组?、js将两个数组合并成一个新的json数组等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何在一个数组PHP中设置子json数组(php 数组 json)

如何在一个数组PHP中设置子json数组(php 数组 json)

我是PHP的新手,我试图从以下响应中获取数据,但我想在子数组中设置此数据.这个怎么做?我有两个不同的表类别和产品.如何明智地显示多个产品类别.

提前致谢!

{
    "data" : [
        {
            "id" : "1",
            "recipe_name" : "Tofu Tikka",
            "ingredients" : "Firm tofu 1 pack (bite sized cube)\r\n",
            "prepration" : "Press tofu with the help of plate to remove moisture 
   and leave for 30-40 minutes, then cut in cubes.\r\n",
            "category_id":"1",
            "category_name":"Today's Menu"
        }
    ]
}

如何像下面的方法一样在子数组中设置以上响应

{
    "data":[
        "category_id":"1",
        "category_name":"Today's Menu"
        "recipes::[
            {
                "id":"1",
                "recipe_name":"Tofu Tikka",
                "ingredients":"Firm tofu 1 pack ",
                "prepration":"Press tofu with the help of plate"
            }, {
                "id":"2",
                "recipe_name":"Tikka Paneer",
                "ingredients":"Firm tofu 1 pack ",
                "prepration":"Press tofu with the help of plate"
            },
        ]
    ]
}

下面是我的PHP文件

<?PHP
    // required headers
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");

    // include database and object files
    include_once '../config/database.PHP';
    include_once '../objects/product.PHP';

    // instantiate database and product object
    $database = new Database();
    $db = $database->getConnection();

    // initialize object
    $product = new Product($db);

    // query products
    $stmt = $product->read();
    $num = $stmt->rowCount();

    // check if more than 0 record found
    if ($num>0) {

        // products array
        $products_arr=array();
        $products_arr["data"]=array();

        // retrieve our table contents
        // fetch() is faster than fetchAll()
        // https://stackoverflow.com/questions/2770630/pdofetchall-vs-pdofetch-in-a-loop
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            // extract row
            // this will make $row['name'] to
            // just $name only
            extract($row);

            $product_item=array(
                "id" => $id,
                "recipe_name" => $recipe_name,
                "ingredients" => html_entity_decode($ingredients),
                "prepration" => $prepration,
                "category_id" => $category_id,
                "category_name" => $category_name
            );

            array_push($products_arr["data"], $product_item);
        }

        echo json_encode($products_arr);

    } else {
        echo json_encode(
        array("message" => "No products found.")
        );
    }
?>

解决方法:

我建议您在获取类别及其相关产品的记录时使用JOIN.它将需要单个查询和单个循环来生成所需的数组.这是您可以使用的示例查询.它将获得每个产品记录的类别名称,并且不会显示其中没有产品的那些类别.

SELECT * FROM categories AS c LEFT JOIN offers AS p ON c.category_id=p.category_id WHERE p.offer_id IS NOT NULL

注意:-不要在搜索查询中使用星号(*),而应使用表字段名称.

<?PHP

// initialize empty category array
$categoryArr = [];
// $row has product info with category id and name in it.
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){

    /* First key of categoryArr variable is category id. It will automatically create array key for each category.
    *   If an array key already exists, it will add prodcts in it.
    */
    $categoryArr[$row['category_id']]['category_id'] = $row['category_id'];
    $categoryArr[$row['category_id']]['category_name'] = $row['category_name'];
    $categoryArr[$row['category_id']]['products'][] = $row;
}
/* Once loop done with its work. Need to reset array keys with the help of below function. */
$result = array_values($categoryArr);

echo json_encode($result); ?>

我没有测试过,它只是给您一个想法.希望您能改善它.

json数组push的用法,当新增的为json空对象时,要修改成数组

json数组push的用法,当新增的为json空对象时,要修改成数组

this.data.labelData = []
      this.data.labelData.push(newData);

 

json数组迭代并从json数组创建自己的数组列表

json数组迭代并从json数组创建自己的数组列表

您可以使用 reduce

轻松实现此目的

const array = [
  {
    country: "Bangladesh",deathInLastWeek: [40,42,45,50,55,60,65],maxDeath: 82,minDeath: 5,},{
    country: "India",deathInLastWeek: [100,110,95,102,89,120,98],maxDeath: 148,minDeath: 19,{
    country: "England",deathInLastWeek: [56,62,56,98,91,87],maxDeath: 124,minDeath: 13,];

const [dataMin,dataMax] = array.reduce(
  (acc,curr) => {
    const { country,maxDeath,minDeath } = curr;
    const minObj = { name: country,value: minDeath };
    const maxObj = { name: country,value: maxDeath };
    acc[0].push(minObj);
    acc[1].push(maxObj);
    return acc;
  },[[],[]]
);

console.log(dataMin);
console.log(dataMax);

,

您可以对数组进行 ittertare 并制作两个单独的数组,就像这样

let yourInitialArray = [
  {
    "country" : "Bangladesh","deathInLastWeek" : [40,"maxDeath" : 82,"minDeath" : 5
  },{
    "country" : "India","deathInLastWeek" : [100,"maxDeath" : 148,"minDeath" : 19
  },{
    "country" : "England","deathInLastWeek" : [56,"maxDeath" : 124,"minDeath" : 13
  }
]
``

``
let dataMin = yourInitialArray.map((item) => {
   return {name : item.country,value : item.minDeath}})

let dataMax = yourInitialArray.map((item) => {
   return {name : item.country,value : item.maxDeath}})

``
console your dataMin and dataMax you can get the desired output


,

我用reduce解决了这个问题


 const dataMin = data.reduce((acc,item) => {
  acc.push({ name: item.country,value: item.minDeath });
  return acc;
},[]);

const dataMax = data.reduce((acc,value: item.maxDeath });
  return acc;
},[]);

js处理json数组,如何将json数组按照要求进行分组,分成二维数组?

js处理json数组,如何将json数组按照要求进行分组,分成二维数组?

[
  {
    EquipSerial: ''1001A'',
    AlarmName: ''淬火时间超长'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 10:14:58''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''淬火时间超长'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 10:07:29''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''加热室两根热电偶差异过大'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 09:58:35''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''1#烧嘴报警'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 09:57:10''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''1#烧嘴报警'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 09:56:47''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''2#烧嘴报警'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 09:53:39''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''2#烧嘴报警'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 09:53:14''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''加热室两根热电偶差异过大'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:55:54''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:42:16''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:41:20''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:41:19''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:41:19''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉1全自动条件'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:41:09''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉1全自动条件'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:41:08''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:40:51''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉1全自动条件'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:40:25''
  },
  {
    EquipSerial: ''1002A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:33:26''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:30:02''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:30:02''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:30:02''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:30:02''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:30:02''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:30:02''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:35''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:35''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:35''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:35''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:35''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:35''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:27''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:27''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:26''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:26''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:26''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:26''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:29:25''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:29:25''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:28:47''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:28:46''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:28:46''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:28:45''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:28:44''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:28:43''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:26:26''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:26:26''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-27 08:26:26''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''回火炉搅拌异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:26:25''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''电子开关异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:26:25''
  },
  {
    EquipSerial: ''3001A'',
    AlarmName: ''断路器OFF'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-27 08:26:25''
  },
  {
    EquipSerial: ''1002A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 16:20:51''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''真空排气异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 12:31:22''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''油温复位时间超长'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 12:31:22''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 10:49:16''
  },
  {
    EquipSerial: ''4001A'',
    AlarmName: ''推拉车全自动条件异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 10:48:36''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''油温复位时间超长'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 10:41:19''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''真空排气异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 10:30:19''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''户袋负压异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 10:13:21''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''户袋负压异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 10:12:53''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''户袋负压异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 10:12:49''
  },
  {
    EquipSerial: ''1003A'',
    AlarmName: ''户袋负压异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 10:12:41''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 09:13:06''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 09:12:04''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 09:12:04''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 09:11:58''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 08:59:01''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 08:07:46''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 08:06:51''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''1'',
    ChangeTime: ''2020-09-26 08:06:31''
  },
  {
    EquipSerial: ''1002A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 08:06:20''
  },
  {
    EquipSerial: ''1001A'',
    AlarmName: ''滴注流量异常'',
    AlarmLevel: ''1'',
    AlarmValue: ''0'',
    ChangeTime: ''2020-09-26 08:06:17''
  }
]

将上面的json数组,按照 EquipSerial和AlarmName相同分成一组,如果只有单独的一个也分成一组,这样怎么处理,麻烦大佬教教我,小弟感激不尽,谢谢!!!

js将两个数组合并成一个新的json数组

js将两个数组合并成一个新的json数组

var arr1 =  
[
        254, 850,  257, 950,
          0,   1,    0,   0,
          0,   0,    0,   0,
         17, NaN,   45,  60,
         41, 115,    0, 250,
    5889.33, NaN, 2132, NaN,
      26470, NaN,   66, NaN,
       3915, NaN
],
var arr2 = 
[
  ''0'', ''0'', ''0'', ''0'', ''0'', ''0'',
  ''1'', ''1'', ''1'', ''1'', ''1'', ''1'',
  ''0'', ''0'', ''0'', ''0'', ''0'', ''0'',
  ''0'', ''0'', ''1'', ''1'', ''1'', ''1'',
  ''1'', ''1'', ''1'', ''1'', ''1'', ''1''
]

这两个数组长度一样,想实现合并形成类似下面这样的数据结果

[
 {
  id:0
  number:254,
 },
 {
  id:0
  number:850,
 },
 {
  id:0
  number:257,
 },
]

希望大佬教教我,小弟是菜鸟,谢谢!!!

今天关于如何在一个数组PHP中设置子json数组php 数组 json的讲解已经结束,谢谢您的阅读,如果想了解更多关于json数组push的用法,当新增的为json空对象时,要修改成数组、json数组迭代并从json数组创建自己的数组列表、js处理json数组,如何将json数组按照要求进行分组,分成二维数组?、js将两个数组合并成一个新的json数组的相关知识,请在本站搜索。

本文标签:

上一篇php-从SQL查询结果构建父/子数组菜单结构(sql查询父级下所有子集)

下一篇php-Laravel 5.5:无法通过Google发送电子邮件(SSL操作失败)(谷歌无法通过验证)