PHP将所有数组视为关联数组,因此没有任何内置函数。谁能推荐一种相当有效的方法来检查数组是否仅包含数字键?
基本上,我希望能够区分以下两者:
$sequentialArray = array('apple', 'orange', 'tomato', 'carrot');
和这个:
$assocArray = array('fruit1' => 'apple',
'fruit2' => 'orange',
'veg1' => 'tomato',
'veg2' => 'carrot');
您问了两个不完全相同的问题:
考虑您实际上需要哪种行为。(这也许可以满足您的目的。)
对于第二个问题(检查数组是否为零索引和顺序索引),可以使用以下函数:
function isAssoc(array $arr)
{
if (array() === $arr) return false;
return array_keys($arr) !== range(0, count($arr) - 1);
}
var_dump(isAssoc(['a', 'b', 'c'])); // false
var_dump(isAssoc(["0" => 'a', "1" => 'b', "2" => 'c'])); // false
var_dump(isAssoc(["1" => 'a', "0" => 'b', "2" => 'c'])); // true
var_dump(isAssoc(["a" => 'a', "b" => 'b', "c" => 'c'])); // true
问题内容: AngularJs中的内联方法是否可以检查某物是否为数组? 我本以为这样可以工作: 我已经证实它实际上是一个数组。有什么我想念的东西吗? 问题答案: 您可以戴上瞄准镜… 小提琴
问题内容: 我有两个数组,可以这样说: //这些数组应该相等 我想以“最干净”的方式检查他们的平等。 我尝试使用,但得到的答案是错误的。我猜想这种方法关心元素的顺序,我不想这样。 您能告诉我如何以一种不错的方式做到这一点吗? 问题答案: Arrays.sort(s1); Arrays.sort(s2); Arrays.equals(s1,s2); 如果您不想修改原始数组 Arrays.sort()
问题内容: 我确信这是一个非常明显的问题,并且确实有一个函数可以执行此操作,但是我似乎找不到它。在PHP中,我想尽可能有效地知道数组中是否有重复项。我不想像删除它们一样,并且我也不希望运行并将其与原始数组进行比较以查看它们是否相同,因为这似乎效率很低。就性能而言,“预期条件”是该阵列没有重复项。 我只想做类似的事情 我有没有想到的明显功能? 具有正确的标题,并且是一个非常相似的问题,但是,如果您实
问题内容: 我来自python背景,类似的python数据类型(字典)是一组 无序 的键值对。 我想知道PHP关联数组是否无序?他们似乎是有序的。 测试总是在bar之前进行,我可以如您所见地对该数组进行切片。那么,是否始终保证可以跨PHP版本订购?该命令就是我声明数组的命令吗?因此,内部是否有某些东西指向“测试”以将[0]放置在数组中?我已经阅读了http://php.net/manual/en/
问题内容: 我对Redis的所有可用存储选项有些困惑。我想做一些简单的事情,我不想过度设计。我正在与和合作。 我有一个需要存储的简单关联数组。我还需要能够通过其键检索一个项目并遍历所有项目。 所以到目前为止,我一直在使用type。像这样存储我的数组: 这样,我可以像这样轻松访问密钥: 但是现在我需要遍历所有我不知道如何做的帖子,以及是否可以使用我当前的结构来完成。我不知道是否需要将所有内容存储在另
问题内容: 将为空或以逗号分隔的列表(或单个值)。检查它是否为空的最简单方法是什么?我假设只要将数组提取到?中就可以这样做。在这种情况下,跳过展开是否为空可能会更有效,但是出于参数的考虑,我将如何检查数组是否也为空? 问题答案: 如果只需要检查数组中是否有任何元素 如果您需要在检查之前清除空值(通常是为了防止产生奇怪的字符串):