【问题标题】:making a code into a function php [closed]将代码制作成函数php [关闭]
【发布时间】:2013-07-14 08:12:52
【问题描述】:

好的,所以我有以下代码(在数组上完全按照我想要的方式工作) 它适用于一个名为 courseInfo() 的数组并对其进行更改。

$sizev1 = sizeof($courseInfo);
for ($row = 0; $row < $sizev1; $row++)
{
$tempsemhrs= $courseInfo[$row][3];
$tempday= $courseInfo[$row][4];
    if ($tempday == "א") $tempday=1;
    if ($tempday == "ב") $tempday=2;
    if ($tempday == "ג") $tempday=3;
    if ($tempday == "ד") $tempday=4;
    if ($tempday == "ה") $tempday=5;
    if ($tempday == "ו") $tempday=6;
$tempstarttime= $courseInfo[$row][5];
    if( (StrDelete($tempstarttime, 2, 3)-7) <10 )
        if( (StrDelete($tempstarttime, 0, 3)) == "45" )
            $tempstarttime= "0".(StrDelete($tempstarttime, 2, 3)-7+1);
        else
            $tempstarttime= "0".(StrDelete($tempstarttime, 2, 3)-7);
    if( (StrDelete($tempstarttime, 2, 3)-7) >=10 )
        if( (StrDelete($tempstarttime, 0, 3)) == "45" )
            $tempstarttime= (StrDelete($tempstarttime, 2, 3)-7+1);
        else
            $tempstarttime= (StrDelete($tempstarttime, 2, 3)-7);        


$courseInfo[$row][6]= ( $courseInfo[$row][2].$tempsemhrs.$tempday.$tempstarttime);

}

现在,还有几个地方我可能需要使用该代码,所以我考虑将它变成一个函数而不是加倍代码,但是当我尝试它不再起作用时,我所做的只是将它复制到函数 {}并更改了里面的名称,但它不起作用,我也将它复制到这里,我很想有人告诉我我哪里出错了,为什么它现在不起作用?

function addSortingCode ($tableChange)
{
$sizev1 = sizeof($tableChange);
for ($row = 0; $row < $sizev1; $row++)
    $tempsemhrs= $tableChange[$row][3];
    $tempday= $tableChange[$row][4];
        if ($tempday == "א") $tempday=1;
        if ($tempday == "ב") $tempday=2;
        if ($tempday == "ג") $tempday=3;
        if ($tempday == "ד") $tempday=4;
        if ($tempday == "ה") $tempday=5;
        if ($tempday == "ו") $tempday=6;
    $tempstarttime= $tableChange[$row][5];
        if( (StrDelete($tempstarttime, 2, 3)-7) <10 )
            if( (StrDelete($tempstarttime, 0, 3)) == "45" )
                $tempstarttime= "0".(StrDelete($tempstarttime, 2, 3)-7+1);
            else
                $tempstarttime= "0".(StrDelete($tempstarttime, 2, 3)-7);
        if( (StrDelete($tempstarttime, 2, 3)-7) >=10 )
            if( (StrDelete($tempstarttime, 0, 3)) == "45" )
                $tempstarttime= (StrDelete($tempstarttime, 2, 3)-7+1);
            else
                $tempstarttime= (StrDelete($tempstarttime, 2, 3)-7);        


    $tableChange[$row][6]= ( $tableChange[$row][2].$tempsemhrs.$tempday.$tempstarttime);
    }
 }
addSortingCode ($courseInfo);

【问题讨论】:

  • php.net/functions - 主题更广泛,因此通常建议在使用前阅读有关它的手册并了解其概念。您并没有那么远,但请考虑将您的函数与其余代码分开,其中的变量也是如此。重要的是:php.net/variables.scope

标签: php arrays function


【解决方案1】:

你可以这样做:

//return the final contructed array(here $tableChange) as function output
function addSortingCode($tableChange)
{

     //your code
     return $tableChange;
}

//calling of the function

 $output = addSortingCode($courseInfo);

【讨论】:

  • 这和@Trung-Hieu Le 的回答都可以。
【解决方案2】:

$tableChange 变量不会在函数内部进行修改。尝试通过引用传递,而不是将您的函数签名更改为

function addSortingCode (&$tableChange)

【讨论】:

  • 是的。如果没有&amp;$tableChange$courseInfo副本,所以修改它是没有意义的,除非你也将它返回并分配给$courseInfo
  • 非常,我真的不知道。现在工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多