使用串行键合并所有数组值

时间:2014-05-22 12:57:04

标签: php arrays laravel

我正在使用Laravel应用程序,用户可以使用少量选项来管理已发布的数据。 因此,每当用户发帖时,他都可以选择为其添加类别,并根据该类别填写更多详细信息。在提交帖子数据时,使用它的类别ID保存(我保存此类别,并通过将其id放到帖子表中将其策划的值发送到其他表格)。

发布数据后的

数组如下:

            Array
    (
  [title] => this is data 
   [subhead] => this is data this is data this is data this is data 
   [htmlcontent] => this is data this is data this is data this is data this is data this is data 
  [category] => story
   [author] => Array
    (
        [0] => author 1
        [1] => author 2
    )

[facts] => Array
    (
        [0] => facts
    )

[inspiration] => Array
    (
        [0] => insp1 
        [1] => insp2
    )

[tags] => Array
    (
        [0] => tag
    )

[refrence] => Array
    (
        [0] => ref1
        [1] => ref2
        [2] => ref3
    )

现在根据我的情况,用户可以编辑每个选项,就像他可以编辑作者1,2并保存它一样。为此,我必须使用标识符保存每个值。因此使用author1,author2使其独一无二。

我为帖子策划了一个选项数组,它看起来像这样:

  Array ( [_id]       => 537ded7e8b5c880c1f000029
          [category]  => story 
          [author1]   => Anil Sharma 
          [author2]   => Tester 
          [citaion1]  => cited 
          [citaion2]  => cited2
          [tags]      => tag1,tag2,tag3
          [refrence1] => facebook.com
          [refrence2] => twitter
        )

在前端,我必须显示这样的数据:

   Expected Output
        category    story 
        author      Anil Sharma 
                    Tester 
        citaion     cited 
                    cited2
        tags        tag1,tag2,tag3
        refrence    facebook.com
                    twitter    


   Current Output

        category    story 
        author1      Anil Sharma 
        author2     Tester 
        citaion1     cited 
        citaion2     cited2
        tags        tag1,tag2,tag3
        refrence1    facebook.com
        refrence2    twitter                   

 HTML to show this :
    @foreach($category as $key => $value)
            <li>
             <label class="detailhead">{{$key}}</label>
             <p class="inlineedit" data-type="textarea" data-pk="{{$data->id}}" data-placement="left" data-url="{{URL::to('/')}}/ajax/post" data-title="Enter {{$key}}" id="{{$key}}_hoot">{{$value}}
             </p>

  </li>

  @endif

我无法对密钥的名称进行任何更改,因为它们是该部分的标识符。在其值上,单击用户可以使用jQuery UI editables编辑该部件。用户可以策划任何选项,我必须相应地保存它。那么实现这一目标的最佳方式是什么呢?我应该在视图部分制作或过滤数组部分,但我需要记住的是,每当我向视图中显示此内容时,我必须在标记中保持id="{{$key}}"唯一性。在它的帮助下,我正在保存那个特定的策展部分。

那么对我来说最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

你可以这样做(我已经删除了html css的内容以便于阅读):

<?php $previousKey = null; ?>
@foreach($category as $key => $value)
      <li>
          @if ((substr($key, 0, -1) != substr($previousKey, 0, -1))
              <label class="detailhead">{{ $key }}</label>
          @endif
          <p>{{$value}}</p>
      </li>
      <?php $previousKey = $key; ?>
@endif

它不是最干净的解决方案 - 你可以重构它来改进代码 - 但你明白了。基本上它只是将当前密钥与前一个密钥与数字进行比较。因此citation1citation2会匹配,但只打印第一个引文键名称。

如何生成初始数组?你能把它改成更好的结构,让你的生活更轻松吗?