【问题标题】:How to add key and value in array without foreach, Laravel如何在没有foreach,Laravel的情况下在数组中添加键和值
【发布时间】:2023-01-13 18:04:25
【问题描述】:

我想制作没有 foreach 循环的数组。这是应该返回的:

array:4 [
  0 => array:1 [
    "name" => "tag1"
  ]
  1 => array:1 [
    "name" => "tag2"
  ]
  2 => array:1 [
    "name" => "tag3"
  ]
  3 => array:1 [
    "name" => "tag4"
  ]
]

我让它像这样工作:

            $tags=[];
            $j=0;
            foreach($woo->tags as $tag){
                $tags[$j]['name']=$tag;
                $j++;
            }

但是当我有很多标签时,它在 foreach 循环中可能会很慢。我的标签保存在数据库中的文本字段中,如tag1,tag2,tag3,tag4

有没有其他更快的方法来返回这个..

【问题讨论】:

  • 潜在的array_map 可能会更快。我会把它作为答案发布并让我知道

标签: php arrays laravel multidimensional-array arraylist


【解决方案1】:

试试array_map,我实际上并没有对两者进行基准测试,但它是(如果不是你唯一的)选择之一:

$tags = array_map(function($tag) {
    return ['name' => $tag];
}, $woo->tags);

对于它的价值,如果您实际上在单个列中存储了如此多的标签,以至于它实际上减慢了 PHP 的速度,那么您可能需要退后一步并考虑改进。

【讨论】:

  • 谢谢你。这对我有帮助... :)
【解决方案2】:

使用 array_map() 函数通过对原始数组的每个元素应用回调函数来创建新数组。

$tags = array_map(function($tag) {
    return ['name' => $tag];
}, explode(',', $woo->tags));

【讨论】:

    【解决方案3】:

    在 Laravel 中,您可以使用 array_add() 辅助函数向数组添加键和值,而无需使用 foreach 循环。如果键不存在于数组中,此辅助函数允许您向数组添加新的键值对。

    以下是如何使用 array_add() 辅助函数将键值对添加到数组的示例:

    $data = [
    'name' => 'John Doe',
    'email' => 'johndoe@example.com'];
    $data = array_add($data, 'age', 25);
    

    在此示例中,array_add() 函数用于将新的键值对 age => 25 添加到 $data 数组。

    您还可以使用 [] 表示法将键值对添加到数组。这是一个例子:

    $data = [
    'name' => 'John Doe',
    'email' => 'johndoe@example.com',
    ];
    
    $data['age'] = 25;
    

    在这两种情况下,您都可以看到数据数组现在有一个新键“age”,其中添加了值 25。

    值得注意的是,在 PHP 中,如果您尝试使用 [] 符号向数组添加新的键值对,并且该键已存在于数组中,则该键的值将被替换为新值。

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 2011-08-28
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多