2024-10-01 06:00:07

php stdClass数组

我有一个问题转换对象stdClass到数组。 我是这样尝试的:

return (array) $booking;

or

return (array) json_decode($booking,true);

or

return (array) json_decode($booking);

在强制转换之前的数组充满了一条记录,在我尝试强制转换后它是空的。 如何强制转换/不删除它的行?

转换前的数组:

array(1) {   [0]=>   object(stdClass)#23 (36) {     ["id"]=>     string(1) "2"     ["name"]=>     string(0) ""     ["code"]=>     string(5) "56/13"   } } 

后cast是空NULL如果我尝试做一个var_dump($booking);

我也尝试过这个功能,但总是空的:

public function objectToArray($d) {
        if (is_object($d)) {
            // Gets the properties of the given object
            // with get_object_vars function
            $d = get_object_vars($d);
        }

        if (is_array($d)) {
            /*
            * Return array converted to object
            * Using __FUNCTION__ (Magic constant)
            * for recursive call
            */
            return array_map(__FUNCTION__, $d);
        }
        else {
            // Return array
            return $d;
        }
    }

当前回答

以下是Carlo的回答,可以在课堂上使用:

class Formatter
{
    public function objectToArray($data)
    {
        if (is_object($data)) {
            $data = get_object_vars($data);
        }

        if (is_array($data)) {
            return array_map(array($this, 'objectToArray'), $data);
        }

        return $data;
    }
}

其他回答

使用这个函数可以得到一个标准数组,返回你想要的类型…

return get_object_vars($booking);

这个函数对我有用:

function cvf_convert_object_to_array($data) {

    if (is_object($data)) {
        $data = get_object_vars($data);
    }

    if (is_array($data)) {
        return array_map(__FUNCTION__, $data);
    }
    else {
        return $data;
    }
}

参考:http://carlofontanos.com/convert-stdclass-object-to-array-in-php/

以下是我如何在Laravel中使用它而没有Eloquent。

function getUsers(){ 

   $users = DB::select('select * from users');       
   $data = json_decode(json_encode($users), true); // to array 

   return view('page')->with('data', $data);
}

请使用以下php函数将php stdClass转换为数组

get_object_vars($data)

以下是Carlo的回答,可以在课堂上使用:

class Formatter
{
    public function objectToArray($data)
    {
        if (is_object($data)) {
            $data = get_object_vars($data);
        }

        if (is_array($data)) {
            return array_map(array($this, 'objectToArray'), $data);
        }

        return $data;
    }
}