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  and store the value into the database

//however to storing the object into the db is not good practice
$val = serialize($$as);

$sql = "insert into table_name field_name values('$val')";

//execute the query 
$query = mysqli_query($connection_variable, $sql) or die('error in query');


//while retrieving use unserialize($str) function
unserialize($val);
于 2013-07-02T13:30:58.657 回答
0

要将数组存储在数据库中,您可以使用 PHP序列化函数

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

然后当你从数据库中检索它时使用反序列化

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

还可以考虑对类声明使用 PHP5 表示法,例如将函数和成员变量声明为public/protected/private并使用function __construct()而不是function your_class_name

于 2013-07-02T13:29:20.883 回答