我遇到了一个使用ID来命名类型数组的旧应用,例如…
array(1) { [280]=> string(3) "abc" }
现在,我需要对它们进行重新排序,并且a var_dump()会使得在键为整数的情况下似乎不会发生这种情况。
var_dump()
如果我a向每个索引添加,var_dump()将在键周围显示双引号,我想显示它现在是一个字符串…
a
array(1) { ["280a"]=> string(3) "abc" }
这使我可以轻松地对它们进行重新排序,而无需触及更多代码。
这是 行不通的 。
$newArray = array(); foreach($array as $key => $value) { $newArray[(string) $key] = $value; }
A var_dump()仍将它们显示为整数数组索引。
有没有一种方法可以将键强制为字符串,这样我就可以在不破坏数组的情况下对其重新排序?
编辑 :
我假设如果它们是整数,则不能在不更改键的情况下对其重新排序(在此示例中很重要)。但是,如果它们是字符串,我可以对其重新排序,因为不应将索引解释为具有任何特殊含义。无论如何,请查看我的问题更新以了解我的操作方式(我走了另一条路)。
实际上,它们不必按数字顺序…
array(208=>'a', 0=> 'b', 99=>'c');
如果您手动分配它们,则完全有效。尽管我同意整数键可能会被某人误解为具有顺序含义,但是您会认为如果它们以非数字顺序显示,则很明显它们不是。话虽如此,我认为既然您有在更新时更改代码的余地,那是更好的方法。
可能不是最有效的方法,但很容易做到:
$keys = array_keys($data); $values = array_values($data); $stringKeys = array_map('strval', $keys); $data = array_combine($stringKeys, $values); //sort your data