2015-10-17 98 views
0

好的你們能幫助我嗎?這是功能。它獲得3個參數,並返回一個數組。它將格里曆轉換爲波斯日期。它在包括/ dateConvert.php函數返回數組不工作。 php

public static function toJalali($g_y, $g_m, $g_d) 
{ 
    $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); 
    $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29); 
    $gy = $g_y-1600; 
    $gm = $g_m-1; 
    $gd = $g_d-1; 
    $g_day_no = 365*$gy+self::div($gy+3, 4)-self::div($gy+99, 100)+self::div($gy+399, 400); 
    for ($i=0; $i < $gm; ++$i) 
     $g_day_no += $g_days_in_month[$i]; 
    if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0))) 
     $g_day_no++; 
    $g_day_no += $gd; 
    $j_day_no = $g_day_no-79; 
    $j_np = self::div($j_day_no, 12053); 
    $j_day_no = $j_day_no % 12053; 
    $jy = 979+33*$j_np+4*self::div($j_day_no, 1461); 
    $j_day_no %= 1461; 
    if ($j_day_no >= 366) { 
     $jy += self::div($j_day_no-1, 365); 
     $j_day_no = ($j_day_no-1)%365; 
    } 
    for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i) 
     $j_day_no -= $j_days_in_month[$i]; 
    $jm = $i+1; 
    $jd = $j_day_no+1; 
    return array($jy, $jm, $jd); 
} 

和DIV是一個簡單的除法功能

private static function div($a, $b) 
{ 
    return (int) ($a/$b); 
} 

現在,當我寫類似下面的代碼沒有做任何事情。

<?php 
require ("Includes/dateConvert.php"); 
$yy = 1989; 
$mm = 8; 
$dd = 31; 
echo $yy.$mm.$dd; 
echo "<br><br>"; 
$jj = toJalali($yy, $mm, $dd); 
echo $jj[0].$jj[1].$jj[2]; 
?> 

我在做什麼錯?謝謝。

+0

'公共靜態function'至少是類的成員。調用'$ jj = toJalali'意味着你調用其他函數。 –

+0

哦,你是對的。所以我必須單獨排除功能並正確使用它? –

+0

調用靜態函數就像'ClassName :: MethodName' –

回答

2

當我看到你的函數定義像

public static function toJalali 

這意味着,這個函數的一些類的方法。我不知道名字,我們稱之爲ClassName。由於此功能是static它可以被稱爲不喜歡創建類的實例:

ClassName::toJalali() 

刪除public static作爲建議將沒有功能工作@EliasNicolas仍將類的方法。

如果你想使用功能作爲獨立功能 - 那麼你應該削減/複製功能代碼出類,是的,刪除public static。所以它將只是

function toJalali() 

以外的任何類代碼。

2

你可以試試;刪除

public static 

public static function toJalali 

和刪除

private static function div($a, $b) 
{ 
    return (int) ($a/$b); 
} 

哪裏是

self::div(...) 

代之以

$j_day_no-1/365 

而不是分割功能

或者只是創建一個類來封裝一切;像其他指出:

​​

,你調用它是這樣的:

ClassName::toJalali($yy, $mm, $dd);