从此php数组中检索单个值

时间:2015-09-22 10:00:47

标签: php arrays

我有这个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}]

正确的方法是什么?

5 个答案:

答案 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);

当您需要一个或多个键来查找时,它非常有用。它更节省时间