Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php对象中过滤掉一些元素_Php_Json_Cakephp_Cakephp 3.0 - Fatal编程技术网

从php对象中过滤掉一些元素

从php对象中过滤掉一些元素,php,json,cakephp,cakephp-3.0,Php,Json,Cakephp,Cakephp 3.0,不确定这是一个php还是cakephp问题。我使用的是cakephp版本3.1.3。我有一个cakephp查询对象$query,当我调用debug($query->toArray())时,它是这样的 当我调用json\u encode($query)时,它看起来是这样的 [ { "id": 1, "username": "asd", "password": "123", "fullname": "asd",

不确定这是一个php还是cakephp问题。我使用的是cakephp版本3.1.3。我有一个cakephp查询对象
$query
,当我调用
debug($query->toArray())时,它是这样的

当我调用
json\u encode($query)
时,它看起来是这样的

[
    {
        "id": 1,
        "username": "asd",
        "password": "123",
        "fullname": "asd",
        "email_addr": "asd@gmail.com"
    }
]
如何处理$query,以便在调用
json\u encode($query)
时,输出如下所示

[
    {
        "email_addr": "asd@gmail.com"
    }
]

要仅从数据库接收字段“email\u addr”,请使用以下方法修改查询:

如果要在查询已经运行后删除所有其他字段,只需在数组上循环并修改元素:

$simplified = array();
foreach($query as $row) {
    $simplified[] = array(
        'email_addr' => $row->get('email_addr')
    );
}
echo json_encode($simplified);

另一个重要警告是:在任何情况下都不要以明文形式存储密码。请阅读,特别是有关存储密码的部分

使用json_decode和json_encode函数。虽然@LarsEbert答案的第二部分适用于您已经加载的实体,但有一个更简单的方法:在客户实体中设置哪些字段不应编码。例如,在客户实体类定义中:
protected$\u hidden=['id'、'username'、'password'、'fullname']
$query->select(['email_addr']);
$simplified = array();
foreach($query as $row) {
    $simplified[] = array(
        'email_addr' => $row->get('email_addr')
    );
}
echo json_encode($simplified);