You*_*end 18 php arrays laravel laravel-4 laravel-3
Laravel输出:
Array
(
[0] = stdClass Object
(
[ID] = 5
)
[1] = stdClass Object
(
[ID] = 4
)
)
Run Code Online (Sandbox Code Playgroud)
我想将其转换为普通数组.只是想删除它stdClass Object.我也试过使用->toArray();但是我收到了一个错误:
在非对象上调用成员函数toArray().
我怎样才能解决这个问题?
功能已在http://www.srihost.com上实施
Jar*_*zyk 35
从Laravel版本5.4开始更新它已不再可能.
您可以像@Varun建议的那样更改数据库配置,或者如果您只想在这种情况下执行此操作,则:
DB::setFetchMode(PDO::FETCH_ASSOC);
// then
DB::table(..)->get(); // array of arrays instead of objects
// of course to revert the fetch mode you need to set it again
DB::setFetchMode(PDO::FETCH_CLASS);
Run Code Online (Sandbox Code Playgroud)
Mau*_*ice 26
foreach($yourArrayName as $object)
{
$arrays[] = $object->toArray();
}
// Dump array with object-arrays
dd($arrays);
Run Code Online (Sandbox Code Playgroud)
或者toArray()失败,因为它是一个stdClass
foreach($yourArrayName as $object)
{
$arrays[] = (array) $object;
}
// Dump array with object-arrays
dd($arrays);
Run Code Online (Sandbox Code Playgroud)
不工作?也许你可以在这里找到答案:
Sel*_*lay 13
以防万一有人仍然在这里寻找答案。它可以使用普通的 PHP 来完成。一种更简单的方法是反向 json 对象。
function objectToArray(&$object)
{
return @json_decode(json_encode($object), true);
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您还可以通过更改将所有结果始终作为数组获取
// application/config/database.php
'fetch' => PDO::FETCH_CLASS,
// to
'fetch' => PDO::FETCH_ASSOC,
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助.
小智 6
这对我有用:
$data=DB::table('table_name')->select(.......)->get();
$data=array_map(function($item){
return (array) $item;
},$data);
Run Code Online (Sandbox Code Playgroud)
要么
$data=array_map(function($item){
return (array) $item;
},DB::table('table_name')->select(.......)->get());
Run Code Online (Sandbox Code Playgroud)
小智 6
使用该toArray()方法将对象转换为数组:
$foo = Bar::first(); // Get object
$foo = $foo->toArray(); // Convert object to array
Run Code Online (Sandbox Code Playgroud)
小智 5
这在 Laravel 5.4 中对我有用
$partnerProfileIds = DB::table('partner_profile_extras')->get()->pluck('partner_profile_id');
$partnerProfileIdsArray = $partnerProfileIds->all();
Run Code Online (Sandbox Code Playgroud)
输出
array:4 [?
0 => "8219c678-2d3e-11e8-a4a3-648099380678"
1 => "28459dcb-2d3f-11e8-a4a3-648099380678"
2 => "d5190f8e-2c31-11e8-8802-648099380678"
3 => "6d2845b6-2d3e-11e8-a4a3-648099380678"
]
Run Code Online (Sandbox Code Playgroud)
https://laravel.com/docs/5.4/collections#method-all
小智 5
也可以将对象类型转换为数组。这对我来说很有效。
(array) $object;
将转换
stdClass Object
(
[id] => 4
)
Run Code Online (Sandbox Code Playgroud)
到
Array(
[id] => 4
)
Run Code Online (Sandbox Code Playgroud)
尝试将数据从查询生成器传递到视图时遇到同样的问题。由于数据作为对象出现。所以你可以这样做:
$view = view('template', (array) $object);
Run Code Online (Sandbox Code Playgroud)
在你看来,你使用像这样的变量
{{ $id }}
Run Code Online (Sandbox Code Playgroud)