如何强制PHP将字符串用作数组键?
我遇到了一个使用ID来命名类型数组的旧应用,例如…
array(1) { [280]=>
string(3) "abc"
}
现在,我需要对它们进行重新排序,并且a var_dump()
会使得在键为整数的情况下似乎不会发生这种情况。
如果我a
向每个索引添加,var_dump()
将在键周围显示双引号,我想显示它现在是一个字符串…
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
以上是 如何强制PHP将字符串用作数组键? 的全部内容, 来源链接: utcz.com/qa/412917.html