【问题标题】:PHP bidimensional associative array of two different associative arrays how to foreach just one of the two两个不同的关联数组的PHP二维关联数组如何foreach只是两个中的一个
【发布时间】:2021-04-22 05:41:45
【问题描述】:

我遇到这种情况是因为我有两个关联数组要传递给视图

然后在视图中我必须对第一个数组进行 foreach 并获取一个列表

next foreach 获取第二个详细信息表

数组的创建方式与 array_merge 和其他 array_* 函数略有不同

我只是像这样在我的代码中重复了两次分配

    $newArray = $ticketResult;
    $newArray = $deptResult;

它可以工作并且 print_r($newArray);显示这个(在 sn-p 之后):

    Array
    (
        [ticketResult] => Array
            (
                [0] => Array
                    (
                        [id] => 3943
                        [t_name] => customerOne
                        [date] => 1508236987
                        [d_name] => In progress
                    )

                [1] => Array
                    (
                        [id] => 4139
                        [t_name] => AnotherName
                        [date] => 1522134694
                        [d_name] => In progress
                    )

                [2] => Array
                    (
                        [id] => 4367
                        [t_name] => HisName
                        [date] => 1535118892
                        [d_name] => On hold
                    )

                [3] => Array
                    (
                        [id] => 4395
                        [t_name] => Hername
                        [date] => 1536914668
                        [d_name] => Shipping
                    )

            )

        [deptResult] => Array
            (
                [0] => Array
                    (
                        [id] => 0
                        [name] => Arrived
                    )

                [1] => Array
                    (
                        [id] => 1
                        [name] => In progress
                    )

                [2] => Array
                    (
                        [id] => 2
                        [name] => On hold
                    )

                [3] => Array
                    (
                        [id] => 4
                        [name] => Closed
                    )

            )

    )

如您所见,两个完全不同的关联数组一个接一个地链接到新的关联数组 $newArray 中,在下一步中我将其传递给视图(codeigniter)

现在在视图中,我想在 html 表中为一个目的 foreach 第一个 'ticketResult',就好像它是一个“单个”关联数组

然后在视图的另一部分中,我想将另一个关联数组 'ticketDept' 放入列表中

我想知道应该怎么做我想做的事......

这种由两个完全不同的关联数组组成的二维关联数组应该如何使用

我也愿意接受更好的方法来满足我的需求,最初是将两个不同的数组传递给视图,所以如果你认为这个问题可以用不同的方式解决......谢谢你的任何建议

谢谢你的提示

为了清楚起见,这是控制器中的调用

    return view("Ticketpage/showtickets", ['dataarrays' => $newArray]); 

【问题讨论】:

  • foreach ($newArray['$newArray'] as $a) { 只会循环遍历该数组与另一个数组
  • @RiggsFolly 谢谢你,对不起,你能明确地举出 foreach 的例子吗?只是 'ticketResult' 数组?

标签: php arrays codeigniter-4


【解决方案1】:
// Controller
$data = $ticketResult;
$data = $deptResult;

// view use the first array
<?php foreach($ticketResult as $result): ?>
  
 // Your code here

<?php endforeach; ?>




// view use the second array
<?php foreach($deptResult as $result): ?>
 
// Your code here

<?php endforeach; ?>

但是我会在控制器中更明确一点,并执行以下操作:

$data['ticketResult'] = $ticketResult['ticketResult'];
$data['deptResult'] = $deptResult['deptResult'];

// Then load the view
return view('foo/bar', $data);

现在假设您想在无序列表中显示该票证结果的所有名称。在您看来,您会这样做:

 <ul>
 <?php foreach($deptResult as $result): ?>
    <li><?php echo $result['t_name'] ?></li>
 <?php endforeach; ?>
 </ul>

【讨论】:

  • 谢谢。我在问题的末尾添加了对视图的控制器调用。我可以请您使 View 方面的 foreach 更明确吗?谢谢你。在视图方面,我有“dataarrays”,如何引用视图中的单个数组之一?谢谢
【解决方案2】:

在 Marco 的双重提示下,我终于找到了要应用的正确技术

Controller 中,我有两个 associative 数组,由两个不同 Models

的两种方法返回

正如问题中所写,这两个数组链接在结果数组 $data 中

public function showTickets($id)
{

    $ticketModel = new TicketModel();
    $deptModel = new DeptModel();

    $ticketRecords = $ticketModel->getTicketsByDept($id);
    $deptRecords = $deptModel->getAvailableDepts();

    $data['ticketResult'] = $ticketRecords;
    $data['deptResult'] = $deptRecords;

    return view("Chart/showtickets", $data);

}

在“showtickets”View中,这两个数组可以单独访问

<h1>Chart</h1>

<p>

    <?php foreach ($deptRecord as $dKey): ?>

      <?= $dKey['id'] ?> , <?= $dKey['name'] ?> <br>

    <?php endforeach; ?>

</p>


<table style="width:100%">
  <tr>
    <th>Ticket ID</th>
    <th>Cliente</th>
    <th>Data Creazione</th>
    <th>Dipartimento</th>
  </tr>

  <?php foreach ($ticketRecords as $tKey): ?>

        <tr>
            <td><?= $tKey['id'] ?></td>
            <td><?= $tKey['t_name'] ?></td>
            <td><?= date("d-m-Y", $tKey['date']) ?></td>
            <td><?= $tKey['d_name'] ?></td>
        </tr>
        
    <?php endforeach; ?>
</table> 


<?= $this->endSection() ?>

【讨论】:

  • 你不需要这个:return view("Chart/showtickets", ['dataarray' => $data]);您可以将 $data 发送到视图,它们使用数组键作为视图中的变量。
  • @marcogmonteiro 试过了,没用。我的意思是我尝试通过return view("Chart/showtickets", $data);并在视图中使用&lt;?php foreach ($data['deptResult'] as $dKey): ?&gt;
  • @marcogmonteiro 好的,我知道了,谢谢你的提示。我已经编辑了代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 2014-06-21
  • 2016-01-04
  • 2011-11-26
  • 2012-05-03
相关资源
最近更新 更多