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 来执行此操作? 也许“AD
是0
”并不那么明显。也许它甚至不是真的?
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判断数组是关联数组还是数值数组的主要内容,如果未能解决你的问题,请参考以下文章