【问题标题】:Multiple foreach to process nested arrays -- PHP CodeIgniter多个foreach处理嵌套数组——PHP CodeIgniter
【发布时间】:2014-06-30 13:43:37
【问题描述】:

首先要感谢您抽出宝贵的时间来查看我的问题——我在 PHP/CodeIgniter 编程方面还是个新手,但是我非常喜欢它。

我想做什么:

1) 在用户登录时检索与公司关联的每个 CompanyId。我通过将会话中的 $CompanyId(在我的控制器中)作为参数传递给我的模型中的查询来实现这一点。我这样工作得很好:

 // Assign query result to array  to be used in view
    $data['campaigns'] = $this->model_record->retrieve_campaign($CompanyId);

2) 返回值是这样嵌套的数组:

Array ( 
[campaigns] => Array ( 
    [0] => Array ( 
        [CampaignId] => 1 
        [DID] => 2394434444 
        [FWDDID] => 3214822821 
        [ProductId] => 1 
        [CampaignName] => Fort Myers Bus #1 
        [ProductName] => CallTrack - Sharktek 
        [Active] => 1 
        [CompanyId] => 1 ) 
    )

3) 一旦处理完毕,我将尝试为每个循环创建一个循环,该循环通过我模型中的另一个查询来查询每个 CampaignId。由于我正在实现的 MVC 模式,我必须将此查询的结果传递给我的 $data 数组以发送到视图。

foreach($data['campaigns'] as $campaign) {
    $ids[] = $campaign['CampaignId'];
}

foreach ($ids as $row) {
    $data['ids'] = $this->model_record->week_data(0,$row, $StartDate);
}

4) 然后我尝试在我的视图中测试查看我的查询的所有结果,但是,我只收到一个值,但是当我回显 CampaignId 的 foreach 的结果时,它们都会显示出来。有人有什么建议吗?

<?php 
foreach($ids as $row):
echo $ids['MyCount'];
endforeach
 ?>

5 额外)我还没有开始处理这个问题,但是一旦我得到这个工作,我想运行查询 week_data 7 次,因为它返回一周中每一天的数据。我的假设是我会放置一个 for 循环,直到它达到 7,这是正确的吗?

再次感谢你们试图帮助我——我非常感谢你们中的许多人为这个社区所做的工作。

【问题讨论】:

  • 关于 5 Extra 您的假设是错误的,您可以在一个查询中使用 LIMIT 和 OFFSET sql 结构,在活动记录中 $this->db->limit($offset,$限制);

标签: php mysql arrays codeigniter nested


【解决方案1】:

这一行:

$data['ids'] = $this->model_record->week_data(0,$row, $StartDate);

应该是这样的:

$data['ids'][] = $this->model_record->week_data(0,$row, $StartDate);

事实上,第一行会覆盖$data['ids'],直到你只剩下最后一行。您需要将它们添加到一个数组中以收集所有它们。

【讨论】:

  • 你为我节省了盯着教程看的时间。谢了哥们!要将查询处理七次,您会建议使用 for 循环吗?
猜你喜欢
  • 2016-06-15
  • 2011-04-10
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2020-09-12
  • 2018-04-08
相关资源
最近更新 更多