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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php判断数组是关联数组还是数值数组相关的知识,希望对你有一定的参考价值。

具体思路:获取数组的所有键:“array_keys()”
遍历所有键判断是否按照顺序从0开始每个增一。
具体方法如下:
function _checkAssocArray($arr)

$index = 0;
foreach (array_keys($arr) as $key)
if ($index++ != $key) return false;

return true;

逻辑很简单,关联数组的键不会全部都按照:0,1,2,3…的顺序递增,如果它确实这样,那么和数值数组没有任何区别,相同处理即可。
网上有另外一种思路:将数组所有的键与一个(0,数组长度)的新数组求差,
参考技术A 孤云独去闲。

与 PHP 中的数值数组相关联

【中文标题】与 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】:

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

    $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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

以上是关于php判断数组是关联数组还是数值数组的主要内容,如果未能解决你的问题,请参考以下文章

与 PHP 中的数值数组相关联

PHP 数组排序:内置函数算法排序

PHP 数组排序:内置函数算法排序

php 判断数组里是不是有某个值

如何判断一个 fortran 数组指针是直接分配的,还是与另一个对象相关联?

PHP 中创建数组的方法(私人收藏)