-3

わかりましたので、次のコードがありました (これは、配列で必要なとおりに機能しました) 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);

}

今、そのコードを使用しなければならない場所が他にもいくつかあるので、コードを2倍にする代わりに関数にすることを考えましたが、試してみると機能しなくなり、関数 {} にコピーして名前が入っていて機能しません。ここにもコピーします。誰かに教えてもらいたいのですが、どこが間違っていたのか、なぜ今は機能していないのですか?

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);
4

2 に答える 2

2

あなたはこれを行うことができます:

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

     //your code
     return $tableChange;
}

//calling of the function

 $output = addSortingCode($courseInfo);
于 2013-07-14T08:20:07.647 に答える
0

変数は$tableChange関数内で変更されません。関数のシグネチャを次のように変更して、代わりに参照渡しを試してください。

function addSortingCode (&$tableChange)
于 2013-07-14T08:16:33.747 に答える