PHP中将关联数组转换为数字数组

4

我有一个关联数组,我想要使用数字作为键。我的意思是:这个数组大致长这样:

$countries = array
    "AD"  =>  array("AND", "Andorra"),
    "BG"  =>  array("BGR", "Bulgaria")
);

显然,AD是0,BG是1,但当我打印$countries[1]时,它甚至不显示"Array"。 当我打印$countries[1][0]时,也没有显示任何内容。我有键的编号,但不应使用关联键。

你想使用一个字符串键和一个数字键。为什么不使用具有id、code、name架构的SQL表来实现呢? - Fabián Heredia Montiel
1
也许“AD0”并不那么明显。甚至可能不是真的? - Kerrek SB
fabianhjr: 是的,我不能使用SQL表,因为脚本有很多模块,我不确定哪个使用了哪个。 KerrekSB: 为什么? - user890450
4个回答

21

array_values 的完美应用场景:

$countries = array_values($countries);

然后,您可以通过它们的索引来检索值:

$countries[0][0]; // "AND"
$countries[0][1]; // "Andorra"
$countries[1][0]; // "BGR"
$countries[1][1]; // "Bulgaria"

4

array_keys()函数可以获取数组的键名,array_values()函数可以获取数组的值,两者都是按数字索引排序的。


1
你可以将它转换为一个数字数组:

    $countries = array(
    "AD"  =>  array("AND", "Andorra"),
    "BG"  =>  array("BGR", "Bulgaria")
);
$con=array();
$i=0;
foreach($countries as $key => $value){
    $con[$i]=$value;
    $i++;
}
echo $con[1][1];

//the result is Bulgaria

0

有几种方法可以实现你想要的功能。除了制作一个次要的键映射数组、注入引用或者使用一个同时持有数字和关联键的ArrayAccess怪物,你还可以使用以下方法:

 print current(array_slice( current(array_slice($countries, 1)), 0));

这是对$countries[1][0]的丑陋解决方法。请注意,数组键似乎仍然以相同的顺序出现;令人困惑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接