Php 如何将整数指定为关联数组中的键?
我有一些从表中获取一些行的代码,我想在PHP中创建一个类似于[row\u id]=>row\u title的关联数组。这将用于填充选择列表。问题是,除非我在密钥中包含字符串,否则该密钥总是恢复为以0开头的有序数字。如果我将字符串与键一起添加,那么键将保留我想要的ID。但很明显,我不想要钥匙上的字符串 这是我的密码:Php 如何将整数指定为关联数组中的键?,php,arrays,Php,Arrays,我有一些从表中获取一些行的代码,我想在PHP中创建一个类似于[row\u id]=>row\u title的关联数组。这将用于填充选择列表。问题是,除非我在密钥中包含字符串,否则该密钥总是恢复为以0开头的有序数字。如果我将字符串与键一起添加,那么键将保留我想要的ID。但很明显,我不想要钥匙上的字符串 这是我的密码: public static function select_array(){ $courses = ORM::factory('course')->order_by('
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,但前面有一个“.”。。。我尝试过使用(string)$c->id,但也没有成功。我还尝试将$test设置为“”$c->id,然后修剪它,但这不起作用,而且这只是一个奇怪的黑客尝试
希望这是有道理的。我的问题:如何简单地告诉密钥是一个特定的数字?第一个代码片段看起来应该按照您想要的方式工作。假设$c->id不生成整数的有序列表,从select_array()检索后是否对数组进行排序?您是否在foreach之后和return语句之前尝试过var_dump()'ng$out 如果转换为字符串解决了问题,请尝试以下操作
$out[(string)$c->id] = $c->title;
你能在foreach语句之前转储$courses,在return语句之前转储$out吗?如果它覆盖了它,我不明白为什么。试试这个
foreach($courses as $c){
$test = "" . $c->id;
$out[(int)$test] = $c->title;
}
在应用了一些var_转储之后,我找到了破坏阵列的罪魁祸首。事实上,上述功能正常工作;密钥保持数据库中的正常ID。但在这个函数之后,我添加了以下内容:
array_unshift($courses,“选择要添加的课程”)此时,所有键都被重置为有序计数,未移位元素从0开始。我想这是有道理的,但有趣的是,只有当进入数组的所有键都是整数时才会发生这种情况!感谢大家的快速反应,它帮助我继续寻找答案!