在Laravel中将对象数组转换为值数组

时间:2019-09-05 10:43:09

标签: laravel laravel-5 eloquent

我的laravel应用程序控制器中有以下代码:

$levels =  $request->level;
return $levels;

,它返回如下:

{
  1: [
    "9226"
  ],
  2: [
    "166"
  ]
}

我需要的只是返回值(9226,166)作为数组,如下所示:

{
  "9226",
  "166"
}

如何获取公正的价值观?

4 个答案:

答案 0 :(得分:1)

使用Laravel的收藏。例如:

$level = [1 => ["9226"], 2 => ["166"]]; // or $request->level;

dd(
    array_flatten($level),
    collect($level)->flatten()->toArray()
);

答案 1 :(得分:1)

如果是数组,则可以使用array_flatten()

array_flatten($levels)

如果是集合,则

$ar = $levels->flatten();
$ar->all();  // get array

答案 2 :(得分:0)

您可以使用array_values函数从数组中获取值。当函数返回一个对象时,您需要将其转换为数组,然后使用array_values

例如。

$levels = array_values((array)$levels);

答案 3 :(得分:0)

array_merge(...$levels);

您可以使用splat运算符(...)使用array_merge来展平PHP 5.6及更高版本的2D数组。

**编辑:

{
  1: [
    "9226"
  ],
  2: [
    "166"
  ]
}

是一个对象,正如Ashok Gadri提到的那样,在使用数组语法之前,您需要将其转换为数组。