【问题标题】:Get JSON data type from associative array in PHP从 PHP 中的关联数组获取 JSON 数据类型
【发布时间】:2013-03-14 11:19:56
【问题描述】:

大家晚上好!

所以,我有一个 JSON 字符串...

{"username":"87db3983285d395ca0af9f","password":"f4f0bb1533ef5034ce6b0a8a7c49a43b","email":"xxx@gmail.com","hnum":3,"splicenum":22,"reg_ip":"71.126.122.217","reg_date":1364175245,"cur_ip":"71.126.122.217","ip_array":["71.126.122.217"],"logins":[],"about":""}

我使用 json_decode() 将此字符串解码为 PHP 中的关联数组。

我正在尝试创建 1 个函数来查询已在 PHP 中转换为关联数组的 JSON 对象。对于这个功能,我现在正在编辑/更新字段。

例子:

json_edit(array(
    "set"=>array(
        "email"=>"yyy@yahoo.com"
    )
));

“set”键表示设置字符串或布尔值。 另一个键是“push”以追加到数组,或“delete”以删除字符串或数组。

我想知道的是,如何在PHP中获取当前数组部分的数据类型?

意思是,我怎样才能让 PHP 说,“好的,字段 'username' 是一个字符串,而 'ip_array' 是一个数组”?

我不希望能够将字符串值“设置”为应该只是一个布尔值或数组。

有没有办法在 PHP 中获取 JSON 数据类型?

非常感谢。

【问题讨论】:

  • 不知道提前进来的JSON格式吗?
  • 我愿意,但为了安全起见,这样就好了。
  • 顺便说一句,我可能还希望允许我的网站的用户在他们在其目录中托管或拥有的文件上使用它,对于那些可能不理解 JSON 100% 的人,这将是很好,因为如果他们尝试为特定类型错误地设置值,那么我可以给他们一条错误消息,说明出了什么问题。

标签: php arrays json types


【解决方案1】:

gettype() 怎么样。 Gettype() 将返回任何变量的数据类型。 http://php.net/manual/en/function.gettype.php

【讨论】:

  • 是的,我在发布这个问题几个小时后才发现。之前找不到。谢谢。
【解决方案2】:

我会使用这样的东西;

<?php
function json_edit($json, $changes = array()){

    $decoded = json_decode($json);

    foreach($changes as $action => $data){
        swith($action){
            case 'SET':

                foreach($data as $key => $value){
                    $decoded[$key] = $value;
                }

            break;

            case 'DELETE' :

            break;
            default;

        }
    }

    return json_encode($decoded);
}
?>

【讨论】:

  • 这很好,但我更喜欢我的方法的唯一原因是因为我觉得它更容易阅读和写作。另外,我不明白这如何区分数据类型。 (如果应该这样的话。)
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多