当前位置: 首页 > 面试题库 >

in_array()和多维数组

云浩然
2023-03-14
问题内容

in_array()过去经常检查数组中是否存在值,如下所示:

$a = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $a)) 
{
    echo "Got Irix";
}

//print_r($a);

但是多维数组(下)如何处理-如何检查该值是否存在于多维数组中?

$b = array(array("Mac", "NT"), array("Irix", "Linux"));

print_r($b);

还是我不应该使用in_array()多维数组?


问题答案:

in_array()在多维数组上不起作用。您可以编写一个递归函数来为您做到这一点:

function in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }

    return false;
}

用法:

$b = array(array("Mac", "NT"), array("Irix", "Linux"));
echo in_array_r("Irix", $b) ? 'found' : 'not found';


 类似资料:
  • 我试图非常简单地使用in_array()检查数组中的键,然后回显其值。 我有值556729685,我想检查这个值是否存在?所以我使用in_array()函数来实现这个。 以上三个我都用过,但结果总是显示NULL表示空白。 我真的很沮丧找到解决办法。我不明白发生了什么。

  • 问题内容: 如何检查多个值,例如: 这是一个例子,所以您了解得更多一些,我知道它不会起作用。 问题答案: 将目标与干草堆相交,并确保交点与目标完全相等: 请注意,您只需要验证所得交集的大小是否与目标值数组的大小相同,即可说是的超集。 为了确认至少有一个值,也是,你可以这样做检查:

  • MATLAB中的多元数组MATLAB是下标多于两个的数组。可以调用带有两个以上变元的zeros, ones, rand, 或randn函数来产生。例如, R = randn(3,4,5); 生成一个3*4*5的数组,共有3x4x5 = 60个正态分布的随机元素。 三维数组可能表示三维物理数据,譬如房间的温度,取样于一个长方形网格。或者,可表示一个矩阵序列A(k),或依赖时间变化的矩阵A(t)。在

  • 问题内容: 在C#中,有两种创建多维数组的方法。 我知道第一种方法会在内部创建一维数组,第二种方法会创建一个数组数组(访问速度较慢)。 但是在Java中,没有[,]这样的东西,我看到这样声明的多维数组: 由于这样的语法在C#中是非法的,而Java在no中是非法的,所以我想知道这是否等效吗?还是仍然是一个数组数组? 问题答案: 你说错了 锯齿状(嵌套)阵列更快。(CLR已针对它们进行了优化) Jav

  • 问题内容: 例如: 一个) 与 b) 最初以为我会为了简化而选择a)。 我知道Java不会像C那样在内存中线性存储数组,但是这对我的程序有什么影响? 问题答案: 通常,在搜索答案时,最好的办法是查看如何将选择编译到JVM字节码中: 这被翻译成: 因此,如您所见,JVM已经知道我们在谈论多维数组。 进一步说明: 这被转换为(跳过循环): 因此,如您所见,多维数组在VM内部进行处理,无用指令不会产生开

  • 主要内容:1、二维数组,2、初始化二维数组,3、访问二维数组种的元素C# 中同样支持多维数组(也可称为矩形数组),它可以是二维的,也可以是三维的,多维数组中的数据以类似表格(行、列)的形式存储,因此也被称为矩阵。 要创建多维数组,我们需要在声明数组的方括号内添加逗号,例如: int[,] arr=new int[3,3];         // 声明一个二维数组 int[,,] arr=new int[3,3,3];     // 声明一个三维数组  1、二维数组