我有一些代码可以从表中获取一些行,我想在PHP中创建一个关联数组,就像[row_id] => row_title。然后,这将用于填充选择列表。问题是,密钥除非我在其中包含一个字符串,否则总是恢复为以0开头的有序数字。如果我用密钥添加一个字符串,那么该密钥将保留我想要的ID。但显然我不想要密钥中的字符串。
这是我的代码:
public static function select_array(){
$courses = ORM::factory('course')->order_by('title')->find_all();
$out = array();
foreach($courses as $c){
$out[$c->id] = $c->title;
}
return $out;
}
$ c-> id应该是数据库中的id,但PHP会使用计数编号覆盖它。如果我这样做:
public static function select_array(){
$courses = ORM::factory('course')->order_by('title')->find_all();
$out = array();
foreach($courses as $c){
$test = "." . $c->id;
$out[$test] = $c->title;
}
return $out;
}
然后密钥将包含正确的ID,但带有“。”在前面......我尝试过使用(字符串)$ c-> id,但也没有运气。我也尝试将$ test设置为“”。 $ c-> id然后修剪它,但这不起作用,而且这只是一个奇怪的hacky尝试。
希望这是有道理的。我的问题:如何简单地告诉密钥是一个特定的数字?
答案 0 :(得分:1)
你可以在foreach语句之前使用var_dump $ course,在返回之前使用$ out吗?
答案 1 :(得分:1)
如果它覆盖它,我不明白为什么。试试这个......
foreach($courses as $c){
$test = "" . $c->id;
$out[(int)$test] = $c->title;
}
答案 2 :(得分:0)
第一个片段看起来应该按照您想要的方式工作。假设$ c-> id不生成有序的整数列表,你是否在从select_array()中检索后对数组进行排序?您是否在foreach之后和return语句之前尝试了var_dump()'ng $ out?
如果转换为字符串可以解决问题,请尝试类似
的内容$out[(string)$c->id] = $c->title;