我有这个php数组$result2
,看起来像这样。
[
(int) 0 => object(stdClass) {
id => (int) 1
username => 'asd'
password => '123'
fullname => 'asd'
email_addr => 'asd@gmail.com'
}
]
从$result2
开始,我希望$json_result
看起来像这样;
[{"email_addr":"asd@gmail.com"}]
我尝试了
$emailAddress[] = ['email_addr' => $result2['email_addr'] ];
echo json_encode($emailAddress);
然而,我得到的错误就是这个;
注意(8):未定义的索引:email_addr [APP / Controller \ DeptUsersController.php,第126行]
输出就是这样,这是错误的;
[{"email_addr":null}]
正确的方法是什么?
答案 0 :(得分:2)
仔细阅读(int) 0 => object(stdClass)
它是一个对象,该对象是一个数组索引 0 的元素。所以:
$emailAddress[] = ['email_addr' => $result2[0]->email_addr ];
答案 1 :(得分:1)
如果使用$result2['email_addr']
您应该使用此$result2->email_addr
方法
答案 2 :(得分:1)
您的object
类型为stdClass
,因此您无法直接访问字段email_addr
。试试这段代码:
$mObject = new stdClass();
$mObject = $result2[0];
$emailAddress[] = ['email_addr' => $mObject->email_addr ];
echo json_encode($emailAddress);
这应该可以解决您的错误
答案 3 :(得分:1)
试试这个:
$emailAddress[] = ['email_addr' => $result2[0]->email_addr ];
答案 4 :(得分:1)
您可以使用array_intersect_key
:
$wanted = ["email_addr"=>""];
$data = [
"id" => 1,
"username" => 'asd',
"password" => '123',
"fullname" => 'asd',
"email_addr" => 'asd@gmail.com',
];
$result = array_intersect_key($wanted, $data);
var_dump($result);
当您需要一个或多个键来查找时,它非常有用。它更节省时间