如何在 Laravel/PHP 中创建多维数组

Posted

技术标签:

【中文标题】如何在 Laravel/PHP 中创建多维数组【英文标题】:How to create an multidimensional array in Laravel/PHP 【发布时间】:2017-04-15 18:15:32 【问题描述】:

我正在尝试将一些值存储在一个数组中,其中每个元素都有其子元素。

请查找代码:

$children = $user->relations()->wherePlanId($selectplan)->get();
foreach($children as $ch)

  $child[] = $ch->pivot->child;
  $subuser = User::find($ch->pivot->child);
  if($subuser)
      $subchildren = $subuser->relations()->wherePlanId($selectplan)->get();
      foreach($subchildren as $subchild)
      
        $subchildid[] = $subchild->pivot->child;
      
   
  else
  
    $subchildid[] = NULL;
  

我想存储类似child['parent_element']['child_element'] 的东西 即预期的数组格式

child[1][2]
child[1][3]
child[1][4]
child[1][5]
child[2][6]
child[2][7]
.
.
child[3][12]

帮帮我。谢谢

【问题讨论】:

您期望的数组格式是什么? 你的$children的结构是什么? 每个索引child['parent_element']['child_element']的值应该是多少? 【参考方案1】:

假设你的表格数据是

tblusers

id   name
 1   John
 2   Doe
 3   Carl
 4   Jose
 5   Bill
 6   James
 7   Karl

tblparents

id  parent  child
1    1       2
2    1       3
3    1       4
4    1       5
5    2       6
6    2       7

首先:声明一个存储数组的变量

$child_arr = [];

然后循环你的父数组

foreach($children as $ch) 
    // do something

在父循环的循环中,子循环父循环

foreach($subchildren as $subchild) 
    $child_arr['your parent id']['your child id'] = 'your desired value';

所以你的代码会是这样的

$child_arr = [];
$children = $user->relations()->wherePlanId($selectplan)->get();
foreach($children as $ch) 
    $parent_id = $ch->pivot->child;
    $subuser = User::find($ch->pivot->child);
    if($subuser) 
        $subchildren = $subuser->relations()->wherePlanId($selectplan)->get();
        foreach($subchildren as $subchild) 
            $child_id = $subchild->pivot->child;
            $child_arr[$parent_id][$child_id] = $subchild;
        
     else 
        $child_arr[$parent_id] = null;
    

结果会是这样的

array(
    [1] => array(
          [2] => 'value',
          [3] => 'value',
          [4] => 'value',
          [5] => 'value',
    ),
    [2] => array(
          [6] => 'value',
          [7] => 'value'
    ),
    etc...
)

或者你可以把'value'留给true

【讨论】:

【参考方案2】:

试试这个:

foreach($children as $ch)

  $child[] = $ch->pivot->child;
  $subuser = User::find($ch->pivot->child);
  if($subuser)
      $subchildren = $subuser->relations()->wherePlanId($selectplan)->get();
      foreach($subchildren as $subchild)
      
        $subchildid[$ch->pivot->child] = $subchild->pivot->child;
      
   
  else
  
    $subchildid[] = NULL;
  

【讨论】:

它与数组值重叠,只显示最后一个值!

以上是关于如何在 Laravel/PHP 中创建多维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Collection anylogic 中创建多维数组?

如何在html表中创建多维数组

如何在多维数组/网格c ++中创建List

在 Powershell 中创建多维哈希表数组

无法在 codeigniter 中创建多维数组

在jquery中创建一个多维数组