我试图从随机项目对象中获取2个项目。我使用了array_rand()
,但是输出是array_rand() expects parameter 1 to be array, integer given
和Trying to get property of non-object
我用于获取随机项目的代码是:
$k=2;
$centroid = array();
for($i=0; $i<$k; $i++){
$centroid[] = new DataSet($table[array_rand($i)]->sig_class_id,$table[array_rand($i)]->sig_priority);
}
从
获取数据$query = mysqli_query($conn,"SELECT sig_class_id, sig_priority FROM coba");
$table=array();
while ($row = mysqli_fetch_object($query)) {
$table[] = new DataSet($row->sig_class_id, $row->sig_priority);
}
并且DataSet类为
class DataSet{
public $sig_class_id;
public $sig_priority;
function __construct($sig_class_id, $sig_priority){
$this->sig_class_id = $sig_class_id;
$this->sig_priority = $sig_priority;
}
}
有什么想法吗?
答案 0 :(得分:0)
我认为您的逻辑错误。相反,您应该获得一个随机数并获得与随机数相关的数组。尝试下面的代码!
$random = 0;
$centroid = array();
for($i=0; $i=2; $i++){
$random = rand();
$centroid[] = new DataSet($table[$random]->sig_class_id,$table[$random]->sig_priority);
}
==编辑1 ==
提示1:您还可以使用mt_rand()函数产生更好的随机值,并且比rand()快4倍。
提示2:如果您想要10到100(含)之间的随机整数,请使用rand(10,100)。