0

動的配列を持つクラスで作業しています。これらのクラスの動的配列の結果をデータベースに保存する必要があります。

<?php
require_once('ag.php');
class H
 {
    var $Voltage;
    var $Number;
    var $Duration;
function H($Voltage=0,$Number=0,$Duration=0)
     {
        $this->Voltage = $Voltage;
        $this->Number = $Number;
        $this->Duration = $Duration;
    }}
//This will be the crossover function. Is just the average of all properties.
function avg($a,$b) {
return round(($a*2+$b*2)/2);
}
//This will be the mutation function. Just increments the property.
function inc($x)
 {
    return $x+1*2;
}
//This will be the fitness function. Is just the sum of all properties.

function debug($x) 
{
    echo "<pre style='border: 1px solid black'>";
    print_r($x);
    echo '</pre>';
    }
//This will be the fitness function. Is just the sum of all properties.
function total($obj) 
{
return $obj->Voltage*(-2) + $obj->Number*2 + $obj->Duration*1;
}
$as=array();
for($i=0;$i<$row_count;$i++) 
{
$adam = new H($fa1[$i],$fb1[$i],$fcc1[$i]);
$eve = new H($fe1[$i],$ff1[$i],$fg1[$i]);
$eve1 = new H($fi1[$i],$fj1[$i],$fk1[$i]);
$ga = new GA();
echo "Input"; 
$ga->population = array($adam,$eve,$eve1);
debug($ga->population);
$ga->fitness_function = 'total';    //Uses the 'total' function as fitness function
$ga->num_couples = 5;               //4 couples per generation (when possible)
$ga->death_rate = 0;                //No kills per generation
$ga->generations = 10;              //Executes 100 generations
$ga->crossover_functions = 'avg';   //Uses the 'avg' function as crossover function
$ga->mutation_function = 'inc';     //Uses the 'inc' function as mutation function
$ga->mutation_rate = 20;            //10% mutation rate
$ga->evolve();                      //Run
echo "BEST SELECTED POPULATION";
debug(GA::select($ga->population,'total',3)); //The best
$as=array((GA::select($ga->population,'total',3))); //The best
}
?>

$asデータベースに格納する必要がある値を含む配列です。親切に私を助けてください。この$as配列には、$adam,$eve,$eve1 計算後の値が含まれます。

4

2 に答える 2

0

配列をデータベースに格納するには、PHP のserialize関数を使用できます。

$serialized_array = serialize($as); // This can now be stored in the database

次に、データベースから取得するときにunserializeを使用します

$back_to_array = unserialize($result_from_database); //You now have the array again

また、関数とメンバー変数をpublic/protected/privatefunction __construct()として宣言し、代わりに使用するなど、クラス宣言に PHP5 表記を使用することを検討してください。function your_class_name

于 2013-07-02T13:29:20.883 に答える