【问题标题】:Add a new field to array elements in a foreach PHP - Laravel在 foreach PHP 中向数组元素添加一个新字段 - Laravel
【发布时间】:2017-01-15 01:54:17
【问题描述】:

我有这个变量:

$families = array(
    array(
        'expand'      => '',
        'family_id'   => 'AAER',
        'active'      => true,
        'description' => 'Wall Art',
        'group_id'    => 5
    ),
    array(
        'expand'      => '',
        'family_id'   => 'EERR',
        'active'      => true,
        'description' => 'Personalised Mugs',
        'group_id'    => 4
    ),
);

我想在我的 $families 项目中添加一个名为“href”的字段,如下所示:

$families = array(
    array(
        'href'        => 'http://mipage/wall-art/AAER',
        'expand'      => '',
        'family_id'   => 'AAER',
        'active'      => true,
        'description' => 'Wall Art',
        'group_id'    => 5
    ),
    array(
        'href'        => 'http://mipage/personalised-mug/EEER',
        'expand'      => '',
        'family_id'   => 'EERR',
        'active'      => true,
        'description' => 'Personalised Mugs',
        'group_id'    => 4
    ),
);

为此,我在 foreach 循环中迭代 $families:

foreach($cat['families'] as $cat_fam) {
    $cat['families'][]['href']  = 'http//mysite/'.str_slug($cat_fam).'/'.$cat_fam['family_id'];
}

但这对我不起作用。

我该怎么做?

【问题讨论】:

  • 你需要指定它是如何不工作的......

标签: php arrays laravel foreach


【解决方案1】:

可以使用php函数array_walk

这样说:

array_walk($cat['families'], function(&$family){
   $family['href'] = 'http//mysite/'.str_slug($family).'/'.$family['family_id'];
 });

注意 $family 变量是通过引用传递的。

【讨论】:

    【解决方案2】:

    只需遍历数组,并添加一个键 ahref

     $newArray= array();
     foreach($families as $innerArray){
       $innerArray['ahref']='YOUR LINK HERE'; 
       $newArray[] = $innerArray;
     }
    
    $families = $newArray ;//if you want to update families array
    

    【讨论】:

    • 应该是$newArray[] = $innerArray;
    • @AlokPatel 是的,错字,实际上我很快在我的机器上测试了输出并在此处更新了它..
    【解决方案3】:

    请试试这个:

    我想你也忘了在你的str_slug 调用中添加索引description

    foreach($cat['families'] as &$cat_fam) {
        $cat_fam['href'] = 'http://mysite/'.str_slug($cat_fam['description']).'/'.$cat_fam['family_id'];
    }
    

    【讨论】:

      【解决方案4】:

      执行以下操作:

      $href = array('href'=>'http://mipage/wall-art/AAER');
      $combined_array = array_combine($families[0],$href);
      

      未测试,但您可以根据自己的用途尝试或修改

      【讨论】:

        【解决方案5】:

        您必须将空的[] 替换为特定的key。对于此更新 foreach 块来获取元素的 key 并在 foreach 循环中使用它。

        $cat['families'][$key] 指向家庭数组的单个元素。

        这样,

        foreach($cat['families'] as $key=>$cat_fam) {
            $cat['families'][$key]['href']  = 'http//mysite/'.str_slug($cat_fam).'/'.$cat_fam['family_id'];
        }
        

        演示:https://eval.in/636898

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-07
          • 2021-03-20
          • 2021-09-15
          • 2021-12-30
          • 2013-05-28
          • 2021-01-18
          • 2016-04-24
          • 2021-04-21
          相关资源
          最近更新 更多