0

フォームから入力を取得し、それを php 配列に保存して、配列を出力したいと考えています。array.php と marks.php という 2 つのファイルがあります。static をいじっていると思います。助けてください!

マーク.php

<style type="text/css">
.my_table{
margin-top:150px;
margin-left:400px;
}
</style>
<?php
if(!isset($_POST['send'])){
?>
<table  align='center' class='my_table'>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<tr><th></th><th align='left'>Student Marks</th></tr>
<tr><td>enter subject</td><td><input type='text' name='subject'></td></tr>
<tr><td>enter marks</td><td><input type='text' name='marks'></td></tr>
<tr><td colspan='2' align='right'><input type='submit' value='submit' name='send'/>       </td></tr>
</form>
</table>
<?php
}
else{
    include 'array.php';
    $svtoarray=new SaveMarks();
$svtoarray->addToArray($_POST['marks']);
    $svtoarray->printArray();
    }
?>

配列.php

<?php
class SaveMarks{
static $index=0;
function SaveMarks(){
    }
static $marks=array();
function addToArray($value){
    $marks[$index]=$value;
    $index++;
    }

function printArray(){
    $countarr=count($marks);
    for($ind=0;$ind<$countarr;$ind++){
        print $marks[ind];
        }
    }
}

?>
4

2 に答える 2

0

クラス メンバー (メソッドまたはプロパティ) を宣言するということは、値がクラス定義から直接アクセスでき、インスタンス化する必要がないことを意味します。逆に、インスタンス化から静的メンバーにアクセスすることはできません。つまり、インデックスとマークを静的として宣言したためです

SaveMarks::$index または SaveMarks::$marks で問題ありません

しかし $svtoarray=new SaveMarks(); $svtoarray->index と $svttoarray->marks は問題ありません

static キーワードについては PHP のマニュアルを参照してください。

インスタンス化されたオブジェクトからアクセスできるようにするには、「静的」ではなく「パブリック」として宣言する必要があります。より「純粋な」実装は、プロパティの直接変更を許可するのではなく、マークをプライベートとして宣言し、パブリックの「setMarks」メソッドを定義することです。

于 2013-08-31T16:49:09.847 に答える