我在一个有动态数组的类中工作。我需要将这些动态数组的结果存储在数据库中。
<?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
的值。
答案 0 :(得分: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
还考虑将PHP5表示法用于类声明,例如将函数和成员变量声明为public/protected/private并使用function __construct()
代替function your_class_name
答案 1 :(得分: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);