我有以下数组结构
jobs = {70811 ={....invoices = { A="A",...},...},...}
然后我有两个嵌套循环。外部嵌套循环在这种情况下寻找每个作业#70811。然后内循环寻找为该作业列出的每个发票。
在每个循环中我查询其中一个表
foreach ($this->p['jobs'] as $job => $value) {
$sql = 'select concat(sum(i.`AMOUNT`))as `amount`, ...
from `invoice` i
where i.`JOBID` = '.$job.'
group by i.`tracknum` = "'.$this->cTrackKey.'"';
$cmeJobEdits = 0;
if ($result = $db->query($sql))
{
if ($result->num_rows > 0)
{
$this->budget = mysqli_fetch_all( $result, $resulttype = MYSQLI_ASSOC );
$subTot = 0;
for ($i=0; $i<count($this->budget);$i++)
{
$subTot += $this->budget[$i]['amount'];
}
...
unset($i);
$xsql = 'update `cmejob` set `balance` = '.$this->budget[0]['balance'].',... where `jobid` = '.$job;
if (!$result = $db->query($xsql))
{
throw new Exception("Query to update budget failed!");
}else{
$cmeJobEdits++;
}
unset($xsql);
}
}else{
throw new Exception("Query to get billed amounts for this job failed! "`enter code here`);
}
unset($sql);
unset($value);
}//end loop updating cme jobs
我的问题是外部查询,其中$ job变量不是下一个作业#,而是嵌套数组键“发票”,如下所示。
如代码所示,我尝试在循环中取消设置查询和关键变量但没有成功。
select concat(sum(i.`AMOUNT`))as `amount`, ...
from `invoice` i
where i.`JOBID` = invoices //this is the value of the variable $job
group by i.`tracknum` = "'.$this->cTrackKey.'"';
答案 0 :(得分:0)
以下是您请求的值的var_dump($ this-&gt; p ['jobs']。这是您喜欢看的方式
array(1) { [84528]=> array(6) { ["thisBudget"]=> string(4) "0.00" ["thisBilled"]=> string(9) "44,633.80" ["thisSum"]=> string(9) "28,003.00" ["thisBalance"]=> string(10) "-72,636.80" ["invoices"]=> array(1) { ["A"]=> string(1) "A" } ["DORMANT"]=> string(0) "" } }
答案 1 :(得分:0)
问题已经解决。
像往常一样,错误发生在未显示的代码中。上面的代码在$ this-&gt; p ['jobs']数组中添加了一个'发票'元素,当它应该被添加到其他地方时。
现在循环按照描述工作。