![](/img/trans.png)
[英]how to echo same key value first after other key value from multidimensional array in php
[英]How to echo value from an array in according to a key value in PHP
請幫助我進行此陣列打印。
數組
[year_2014] => Array
(
[0] => Array
(
[amount] => 21960
[year] => 2014
[month] => 1
)
[1] => Array
(
[amount] => 25866
[year] => 2014
[month] => 2
)
[2] => Array
(
[amount] => 7840
[year] => 2014
[month] => 3
)
[3] => Array
(
[amount] => 424644
[year] => 2014
[month] => 5
)
[4] => Array
(
[amount] => 22052
[year] => 2014
[month] => 6
)
[5] => Array
(
[amount] => 28037
[year] => 2014
[month] => 7
)
)
我需要根據月份回顯金額 ,以便輸出為
結果
21960, 25866, 7840, 0, 424644, 22052, 28037, 0, 0, 0, 0, 0
也就是說,如果一個月不存在,則該值需要為零,我需要全部十二個月。
親愛的善良的心,請幫助我獲得這個結果。
一些背景
項目是在codeigniter中完成的,我已經為foreach搞砸了一些,但是沒有用。
謝謝。
只需嘗試:
$output = array_fill(0, 12, 0);
array_map(function ($item) use (&$output) {
$output[$item['month'] - 1] = $item['amount'];
}, $input['year_2014']);
或使用簡單的foreach
:
$output = array_fill(0, 12, 0);
foreach ($input['year_2014'] as $item) {
$output[$item['month'] - 1] = $item['amount'];
}
輸出:
array (size=12)
0 => int 21960
1 => int 25866
2 => int 7840
3 => int 0
4 => int 424644
5 => int 22052
6 => int 28037
7 => int 0
8 => int 0
9 => int 0
10 => int 0
11 => int 0
說明:
array_fill
創建一個數組,其中包含12個元素,並填充了0
值。
foreach
在year_2014
數據數組上循環,並將項目的金額設置為month - 1
位置。
array_map
與foreach
一樣,在這里可能是一個過大的array_map
,但效果很好。
您可以每月循環:
$monthsList = array();
foreach( $year_2014 as $months)
$monthsList[$months['month']] = $months['amount'];
print_r($monthsList); // will output array(1 => 21960, 2 => 21960 ...)
for ( $i = 1 ; $i <= 12 ; $i++ )
{
// You check if an amount exists for this month.
$amount = !empty($monthsList[$i]) ? $monthsList[$i] : 0;
// You can show date with mktime() to get a timestamp and date() to show month name.
echo date('M', mktime(0, 0, 0, $i, 1, 2014)).' -> '.$amount.'<br />';
}
HTML版本:
echo '<table>';
echo '<tr>';
for ( $i = 1 ; $i <= 12 ; $i++ )
echo '<th>'.date('M', mktime(0, 0, 0, $i, 1, 2014)).'</th>';
echo '</tr>';
echo '<tr>';
for ( $i = 1 ; $i <= 12 ; $i++ )
echo '<td>'.(!empty($monthsList[$i]) ? $monthsList[$i] : 0).'</td>';
echo '</tr>';
echo '</table>';
$lst_amount = array();
foreach ($arr_year_2014 as $arr_month)
$lst_amount[$arr_month["month"]] = $arr_month["amount"];
// Output
foreach (range(1, 12) as $month)
echo empty($lst_amount[$month]) ? 0 . ' ' : $lst_amount[$month] . ' ';
// Output as HTML table
$html = "<table>\n<tr>\n";
foreach (range(1, 12) as $month) {
$monthName = date('M', mktime(0, 0, 0, $month, 10));
$html .= "<th>$monthName</th>\n";
}
$html .= "</tr>\n<tr>\n";
foreach (range(1, 12) as $month) {
$amount = empty($lst_amount[$month]) ? 0 : $lst_amount[$month];
$html .= "<td>$amount</td>\n";
}
$html .= "</tr>\n</table>\n";
echo $html;
排序:
<?php
function cmp($a, $b)
{
return $a['month'] > $b['month'];
}
//$data = your array
usort($data, "cmp");
foreach ($data as $value) {
echo $value['amount'];
}
?>
您要遍歷每個數字月份(1-12),並檢查數組中是否有任何節點具有該月份。 所以在偽代碼中:
for ( months ) { // 1 through 12
for ( each node in year_array ) {
if ( month == currentMonth ) {
print value of month
}
else
print 0
}
}
}
為月份創建靜態數組為
$months = array('1'=>'Jan','2'=>'Feb',.....'12'=>'Dec');
然后與foreach循環
$num_months = array_keys($months);
foreach($year_array as $key => $amount_array)
{
if(in_array($amount_array['month']),$num_months)
echo $amount_array['amount'];
else
echo "0";
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.