[英]how can i get array in proper format from this foreach and nested if condition in php?
我很困惑,我是新来的PHP。 我使用此代码获取状态为“未付”的列表,所用时间(以天为单位)> 30或> 60或> 90天。 如果时间是> 30天,那么颜色应该是蓝色,> 60天,然后颜色应该是橙色,如果> 90天,那么颜色应该是红色。 所有条件都有效,但问题是我没有按照我想要的格式获得数组。
我的代码是
foreach ($listview_entries as $key => $value){
$invoice_focus = new Invoice();
$invoice_focus->id = $key;
$invoice_focus->retrieve_entity_info($key, "Invoice");
$invoicestatus = $invoice_focus->column_fields['invoicestatus'];
$invoicedate = $invoice_focus->column_fields['invoicedate'];
$currentdate = date("Y-m-d");
$start_date2 = strtotime($invoicedate);
$end_date2 = strtotime($currentdate);
$difference = $end_date2 - $start_date2;
$days = floor($difference/86400);
$items = array();
$color1 = array();
if($invoicestatus == 'Unpaid' && $days>30)
{
if($days>60)
{
if($days>90)
{
$milan=array($key);
$color=array_fill_keys($milan, 'red');
//$smarty->assign('COLOR', $color);
}
else
{
$milan=array($key);
$color=array_fill_keys($milan, 'orange');
//$smarty->assign('COLOR', $color);
}
}
else
{
$milan=array($key);
$color=array_fill_keys($milan, 'blue');
//$smarty->assign('COLOR', $color);
}
if(!empty($color)){
array_push($color1,$color);
}
print_r($color1);
}
$smarty->assign('COLOR', $color1);
}
我得到这样的输出。
Array ( [0] => Array ( [89] => red ) ) Array ( [0] => Array ( [91] => blue ) ) Array ( [0] => Array ( [92] => orange ) )
但我想要这样。
Array ( [0] => Array ( [89] => red ),[1] => Array ( [91] => blue ),[2] => Array ( [92] => orange ) )
请帮帮我。
请删除以下行中的数组保留密钥表:
$milan=array($key);
所以,把这样的代码
$color [$key] = 'red';
代替
$milan=array($key);
$color=array_fill_keys($milan, 'red');
更新到这一个。
来自:
array_push($color1,$color);
$items = array($color1);
至
array_push($color1, $color);
if(!empty($color1)) {
$items[] = $color1;
}
循环前$items = array()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.