【问题标题】:Foreach is not working for two arraysForeach 不适用于两个数组
【发布时间】:2018-05-11 12:35:12
【问题描述】:

我有一个数组

$assid=Array
(
    [0] => Array
        (
            [0] => 6
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [2] => Array
        (
            [0] => 6
        )

    [3] => Array
        (
            [0] => 2
            [1] => 3
        )

)

$key1=Array
    (
        [0] => 0
        [1] => 1
        [2] => 2
        [3] => 3
    )

这里的 $key1 表示 $assid 的索引

还有一个 foreach 循环

 @foreach($roles as $id=>$name)



<option value="{{$id}}"@if(in_array($id, $assid))selected="selected"@endif>{{$name}}</option>

   @endforeach

这里的角色有 12 个值。所以数组将迭代 12 次。我的问题是我想用 foreach 附加 $assid[0],[1],[2],[3] 所以我 $key1 值所以我试过了

$a=0;
     @foreach($roles as $id=>$name)



    <option value="{{$id}}"@if(in_array($id, $assid[$a]))selected="selected"@endif>{{$name}}</option>
    <?php  $a++;?>
       @endforeach

因为 $key1 数组仅作为索引 0 1 2 3.所以我需要 $a 应该在 foreach 循环中从 0 增加到 3 12 次迭代,所以在 3 之后它显示未定义的索引 4。我没有得到适当的解决方案。请帮帮我。请

【问题讨论】:

  • 你能显示使用$assid 的值吗?是数组吗?如果是,则打印它并将输出添加到您的问题中您为$key1做了什么
  • @AlivetoDie--Anantsingh 我已经更新了问题请帮助我
  • @juvajacob 实际上我无法理解您的问题。 $roles 数组数据也是需要的。这样我就可以检查您的代码。请也添加。或者可能是任何一个答案已经帮助了你。如果不在您的问题中添加 $roles 数组

标签: php arrays laravel


【解决方案1】:
$a=0;
 @foreach($roles as $id=>$name)
<option value="{{$id}}"@if(in_array($id, $assid[$a]))selected="selected"@endif>{{$name}}</option>
<?php  $a++;?
 if(a>4){
 a = 0;
   }>
   @endforeach

如果你超过 4 岁,它会使值为零,所以它从零开始

【讨论】:

  • @thanks for your reply..but 同样的错误未定义索引
  • @juvajacob 你能证明使用$assid 的值吗?是数组吗?如果是,则打印它并将输出添加到您为$key1所做的问题中@
  • @AlivetoDie--Anantsingh:我已经更新了我的问题。请帮助
【解决方案2】:

如果我了解您的问题,您正在寻找这些东西...试试这个:-

$assid=Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
)
$roles=Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 6
[6] => 7
[8] => 8
[9] => 9
[10] => 10
[11] => 11

)
@foreach($roles as $id => $name)
  @if(isset($assid[$id]))
    <option value="{{$id}}"@if(in_array($id, $assid))selected="selected"@endif>{{$name}}</option>
  @else 
    <option value="{{$id}}">{{$name}}</option>
  @endif
@endforeach

希望对你有帮助!

【讨论】:

    【解决方案3】:

    可能它按预期工作。

    $a=0;
    @foreach($roles as $id=>$name)
    <?php if($a>3) $a=0; ?>
    <option value="{{$id}}"@if(in_array($id, $assid[$a]))selected="selected"@endif>{{$name}}</option>
    <?php  $a++; ?>
    @endforeach
    

    【讨论】:

      【解决方案4】:

      您需要从N 循环返回0。使用计数器的 模 N + 1 的索引可以保证这一点。

      要循环遍历数组的前 3 项,其中 N=2,因为数组具有从零开始的索引,我们将采用 模 3

      @php ($a = 0)
      
      @foreach($roles as $id=>$name)
         <option
           value="{{$id}}" 
           @if(in_array($id, $assid[$a % 3])) 
               selected="selected"
           @endif
         >{{ $name }}</option>
      
         @php ($a = $a + 1)
      @endforeach
      

      【讨论】:

      • 感谢您的回复..但它总是选择 4 个值。我的要求是第一次迭代 $assid[0]) 应该选择它取决于 $assid 数组。我已经更新了我的问题,你能再帮我一次吗?
      • 对计数器取模 4 会在 3 处停止并返回到 0。您是否担心使用 assid 中的前 3 个数组进行循环?
      • -yes ..so 第一个索引为 0 的数组,因此索引 0 的值为 6 2 3 应选择。第二次迭代索引 1 表示应选择 4、5、6。类似地等等。请帮助me.here assign[0] 表示第一个数组,assgn[1] 表示 2second 数组同样如此
      • 好的,这意味着您将计数器的模 3 用于索引assid
      • -四次迭代总是选择相同的值
      猜你喜欢
      • 1970-01-01
      • 2015-04-04
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多