【问题标题】:Clean way to divide one array to two arrays in Laravel 8在 Laravel 8 中将一个数组划分为两个数组的干净方法
【发布时间】:2022-01-11 20:39:59
【问题描述】:

我想将我的$request->all() 数组分成两个数组,这样我就可以将两个数组发送到不同的数据库表中。

这是我收到的:

  array:12 [▼
  "key1" => "value1"
  "key2" => "value2"
  "key3" => "value3"
  "key4" => "value4"
  "key5" => "value5"
  "key6" => "value6"
  "key7" => "value7"
  "key8" => "value8"
  "key9" => "value9"
  "key10" => "value10"
  "_token" => "47p7eZpSOVOP0kSrL1HBSXn2OrvYT1kCiNoR2Ekr"
  "submit" => "Save"
  ]

但我想要两个不同的数组,像这样:

  array:5 [▼
  "key1" => "value1"
  "key2" => "value2"
  "key3" => "value3"
  "key4" => "value4"
  "key5" => "value5"
  ]

还有:

array:7 [▼
  "key6" => "value6"
  "key7" => "value7"
  "key8" => "value8"
  "key9" => "value9"
  "key10" => "value10"
  "_token" => "47p7eZpSOVOP0kSrL1HBSXn2OrvYT1kCiNoR2Ekr"
  "submit" => "Save"
  ]

我怎样才能做到这一点?对于第一个数组,我已经有了一些想法,但我不知道如何获得第二个数组。这就是我所拥有的:

$first_array = [];
$second_array = [];

foreach ($request->all() as $key => $value) {
    $first_array[$key] = $value;

    if ($key == 'key6') {
        break;
    }
}

【问题讨论】:

  • array_chunk() 一个简单的谷歌就会找到你
  • 另外,当您使用 Laravel 时,如果您有 Collection 而不是 PHP 数组,则有 chunk 方法:laravel.com/docs/8.x/collections#method-chunk
  • Chunk 不能解决问题,因为第一个数组必须是 5 个值,第二个数组可以是 20 个值。
  • 我的意思是,如果您在帖子中的某个地方包含这些详细信息,我们会给您更好的建议。请参阅下面的 array_slice() 答案,或 splice 收集:laravel.com/docs/8.x/collections#method-splice

标签: php arrays laravel


【解决方案1】:

您可以使用array_slice(),因为您说要将数组拆分为前 5 个,然后是其余的。

$input = [  "key1" => "value1",
            "key2" => "value2",
            "key3" => "value3",
            "key4" => "value4",
            "key5" => "value5",
            "key6" => "value6",
            "key7" => "value7",
            "key8" => "value8",
            "key9" => "value9",
            "key10" => "value10",
            "_token" => "47p7eZpSOVOP0kSrL1HBSXn2OrvYT1kCiNoR2Ekr",
            "submit" => "Save"
];

$p1 = array_slice($input, 0, 5);

$p2 = array_slice($input, 5); 

print_r($p1);
print_r($p2);

结果

Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
    [key4] => value4
    [key5] => value5
)
Array
(
    [key6] => value6
    [key7] => value7
    [key8] => value8
    [key9] => value9
    [key10] => value10
    [_token] => 47p7eZpSOVOP0kSrL1HBSXn2OrvYT1kCiNoR2Ekr
    [submit] => Save
)

【讨论】:

  • 不错,简单,正是我需要的,谢谢!
【解决方案2】:

数组块不能解决问题,但这个可行:

$first_array = [];
$second_array = [];
$count = 0;

foreach ($request->all() as $key => $value) {
    if ($count <= 7) {
        $first_array[$key] = $value;
    } else {
        $second_array[$key] = $value;
    }

    $count++;
}

dd($first_array);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 2022-10-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多