【问题标题】:Laravel, how to change array key permanently?Laravel,如何永久更改数组键?
【发布时间】:2018-01-23 14:13:12
【问题描述】:

尝试使用 array_values 但它只是暂时的。

控制器

foreach($rows as $key => $value)
{
  array_values($value);
  //dd shows the key changes to [0], [1], [2] and so on
}

【问题讨论】:

  • 永久是什么意思?你想保存数组吗?如果是这样,您需要将数据存储在数据库中。
  • 如果我通过 compact($rows) 将其传递给查看;并在视图中使用它,它会变为正常
  • 当前数组中的键是什么?你希望他们设置什么?
  • 当前的如上图所示,我想把$value['how']改成这样的数字$value['0']......所以变成了0 =>144, 1=>1, 2=>2 以此类推

标签: php arrays laravel multidimensional-array


【解决方案1】:

你可以这样做,

$rows = array_map(function($v){return array_values($v);}, $rows);

【讨论】:

  • 哦不错...很整洁
  • 更漂亮,不错!
【解决方案2】:

这样的事情应该可以工作:

$new = [];
foreach($rows as $key => $value)
{
  array_values($value);
  $sub = [];
  foreach ($value as $subKey => $subValue) {
    $subKey = $key;
    $sub[$key] = $subValue;
  }
  $new[$key] = $sub;
  //dd shows the key changes to [0], [1], [2] and so on
}

然后返回$new 而不是$rows

【讨论】:

  • 嗯...除此之外还有其他选择吗?还是有一种雄辩的方式来做到这一点?
  • 不更改数组键。代码可以变得更简洁,但我现在正在工作,所以没有时间。您可以将上述内容用作基础并对其进行一些清理,然后再编辑答案吗?
  • 好的,我会在等待更清洁的版本时先使用它
  • 凉爽,预计到达时间:格林威治标准时间晚上 7:30
  • 伙计们,这是 Laravel,解决方案应该很简单。我建议你寻找 Laravel Collection 部分。并记住一些方法不会改变原始集合。将您的数组转换为集合并受益于函数。
【解决方案3】:

由于您使用的是 laravel,您也可以这样做:

$rows = collect($rows)->map(function ($value) {
    return Arr::accessible($value)?collect($value)->values()->all():$value;
})->all();

【讨论】:

    【解决方案4】:

    如果您尝试将关联数组更改为索引数组,请执行以下操作:

    $array = array_values($array);
    

    【讨论】:

    • 不需要把事情复杂化。
    • 不会改变任何东西
    • @benineeeerrrr 它实际上完全符合您的要求。见这里:code.sololearn.com/wF6d755yf5gG
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2011-12-31
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多