我有这样一个自定义的其余动作(在扩展类YII /休息/ ActiveController):如何禁用排序返回数组?
public function actionTest()
{
return ["9" => "Nine", "1" => "one"];
}
当调用API,阵列输出是相反的顺序,即:
{
"1": "One"
"9": "Nine",
}
我想在原来的(预期)顺序...
似乎数组被排序后的数组返回的行动,但我不知道在哪里。这只有在数组键是一个整数发生,预期这样的数组进行排序:
["id-9" => "Nine", "id-1" => "one"]
有使用ArrayDataProvider设置“排序” =假试过,但没有什么区别。
看起来你正在返回一个字典,而不是一个数组。如果你是,那么你不能返回一个“有序字典”,字典通常围绕一个没有顺序的散列表进行。在正在使用的语言/运行时中是否存在“已排序字典”类型? –
自PHP 5.4以来,短数组语法[]与'array()'相同,所以它应该没有关系。 – karpy47
我只是评论,因为你有一个键值数据结构,也被序列化为json(我假设)作为一个对象。这可以解释为什么它没有顺序,由于密钥被哈希的方式,字典通常没有顺序。仍然假设这是json,一个json对象*不保留键排序*,这在规范中特别强调,请参阅http://stackoverflow.com/questions/7198412/keeping-dictionary-keys-of-json-object- in-order-in-objective-c - 如果要保留排序,则必须使用除字典或json对象之外的其他内容。 –