与 PHP 中的数值数组相关联

Posted

技术标签:

【中文标题】与 PHP 中的数值数组相关联【英文标题】:associative to numeric array in PHP 【发布时间】:2012-02-05 15:08:05 【问题描述】:

我有一个关联数组,我想在数字中使用哪些键。我的意思是:数组有点像这样:

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

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

【问题讨论】:

您想使用字符串键和数字键。为什么不使用带有 id、code、name 架构的 SQL TABLE 来执行此操作? 也许“AD0”并不那么明显。也许它甚至不是真的? f***hjr:是的,我不能使用 SQL 表,因为脚本有很多模块,我不确定哪个使用哪个。 KerrekSB:为什么? 【参考方案1】:

array_values 的完美用例:

$countries = array_values($countries);

然后您可以通过索引检索值:

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

【讨论】:

【参考方案2】:

array_keys() 会给你数组的键。 array_values() 将为您提供数组的值。两者都将被数字索引。

【讨论】:

【参考方案3】:

有几种解决方法可以得到你想要的。除了制作辅助键映射数组、注入引用或同时保存数字 关联键的 ArrayAccess 可憎之外,您还可以使用以下方法:

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

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

【讨论】:

【参考方案4】:

您可以将其转换为数值数组:

    $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

【讨论】:

以上是关于与 PHP 中的数值数组相关联的主要内容,如果未能解决你的问题,请参考以下文章

排序与其他相关联的多维数组中的数组

php判断数组是关联数组还是数值数组

SWIFT:将 CGPoint 与数组中的图像相关联

Rails 和 SQL - 与数组、条目中的所有元素相关联

使用指针将数组中的两个对象(每个对象与一个类)相关联

PHP:数组操作函数array_count_values()的实现