Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将整数指定为关联数组中的键?_Php_Arrays - Fatal编程技术网

Php 如何将整数指定为关联数组中的键?

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('

我有一些从表中获取一些行的代码,我想在PHP中创建一个类似于[row\u id]=>row\u 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,但前面有一个“.”。。。我尝试过使用(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,“选择要添加的课程”)