我有一个函数,它将数组作为参数。
function addSearch($arr) { }
如何检查该函数是否只使用值
定义了数组array('option1', 'option2', ...);
或作为键值对:
array('option1' => 'First Option', 'option2' => 'Second Option', ...)
我最喜欢的是,您既可以将搜索文件与标签一起传递,也可以只传递搜索字段,在这种情况下,字段名称也将成为标签。
所以我需要更改一个数组,其值只有$array['option1'] = 'option1'
;
任何想法如何实现这个?
答案 0 :(得分:5)
您无法知道数组如何定义。两种数组都是相同的,它们都有键和值。不同之处在于“无键阵列”使用自动生成的数字键,而在另一个示例中,键显式为字符串。这两个数组是相同的:
array('option1', 'option2')
array(0 => 'option1', 1 => 'option2')
你甚至可以混合使用:
array('foo', 'bar' => 'baz', 42 => 'qux')
因此,您真正感兴趣的是密钥是否为字符串:
foreach ($options as $key => $value) {
if (is_string($key)) {
// string => value pair
} else {
// numerically indexed pair
// note: could still have been explicitly defined, who knows?
}
}
答案 1 :(得分:2)
这将检查您的数组是否是关联的
function is_associative($array) {
return array_values($array) !== $array;
}
答案 2 :(得分:1)
另一种解决方案
<?php
function isAssociative($arr)
{
return array_keys($arr) !== range(0, count($arr) - 1);
}
?>
答案 3 :(得分:1)
我必须在@phranx上使用这个。
让我们说你有这个 数组(&#39; 1&#39; =&gt;&#39; Under&#39;,&#39; 2&#39; =&gt;&#39; Over&#39;) < / p>
此数组中的键将被计算为整数。
最好的方法是确定键是否为键:值对是为了检查数组的 值 是否 等于 到数组本身。