php array_key_exists 的多维数组版本

由于array_key_exists不支持多维数组,只查到一维的,所以这个版本兼容

function multi_array_key_exists($needle,$haystack)
{
    foreach ($haystack as $key => $value) {
        if ($needle == $key) return true;
        if (is_array($value)) {
            if (multi_array_key_exists($needle,$value) == true)          return true;
            else         continue;
        }
    }
    return false;
}

$arr = [
    ‘first‘ => [
        ‘a‘=>‘1‘,
        ‘b‘=>‘2‘
    ],
    ‘two‘ => [
        ‘c‘=>‘3‘,
        ‘d‘=>‘4‘
    ],
];

var_dump(multi_array_key_exists(‘a‘,$arr));
时间: 2024-10-23 05:55:57

php array_key_exists 的多维数组版本的相关文章

多维数组计算差集

大家都知道一维数组计算差集的内置函数是array_diff_assoc($array1, $array2),可是多维数组怎样计算差集呢,就须要写一个对应的算法. 我写了一个算法供大家參考. <? php //多维数组的差集 function array_diff_assoc_recursive($array1,$array2){     $diffarray=array();     foreach ($array1 as $key=>$value){       //推断数组每一个元素是否是

[ 1001] 动态开辟二维数组的说明

开辟二维数组的说明 图解  [1][][][][] [2][][][][] [3][][][][] void main() { int i,j; /*注意申请的指针格式  先创建的是1,2,3首地址为指向指针的指针a来代表 1,2,3所在地址*/ int **a = (int **) malloc(sizeof(int *) * 3); /* 循环创建了3个 1*4的数组 并将首地址给了 1,2,3的位置上*/ for (j=0;j<3;j++) { a[j] = (int *) malloc(

PHP之提取多维数组指定列的方法

前言:有时候在开发中会遇到这样的问题,我们需要把有规律的多维数组按照纵向(列)取出,有下面的方法可用: 我们将拿下面的数组来处理: 1 $arr = array( 2 '0' => array('id' => 1, 'name' => 'name1'), 3 '1' => array('id' => 2, 'name' => 'name2'), 4 '2' => array('id' => 3, 'name' => 'name3'), 5 '3' =&

实例13_求解二维数组的最大元素和最小元素

实例说明: 看完题,我觉得作者应该就是让我输出一个数组中最大的数字和最小的数字吧,于是开始写了. 1.先给数组赋值 2.然后遍历数组,通过中间值,选出最大的和最小的. 1 /** 2 * Copyright (c) 1991 - 2016 Arvin Tang. 3 * All rights reserved. 4 * 5 * 文件名称:实例13 6 * 简要描述:求解二维数组的最大和最小元素 7 * 8 * 当前版本:1.0 9 * 作 者: 10 * 完成日期:2016-1-7 11 * 修

c++和c动态申请二维数组

这是我面试中遇到的一道题,用c和c++分别申请一个二维数组,int **res,要求申请后的可以使用res[3][4]这一类防存方式. 这个是没有错误检查的版本. 答案: c++语言的版本 int **allocate(int row, int column) { int **res = new int*[row]; for (int i = 0; i < row; i++) { res[i] = new int[column]; } return res; } c语言 int **alloca

vector动态二维数组(容器的容器)占用内存分析

之前在这里写过一篇"C++中的动态二维数组".在C++中没有动态二维(多维)数组.但是根据原理我们可以自己创建. 在看过STL的vector源代码后"<STL源码剖析>---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组. 创建一个2x4的二维数组.想到的办法是:先创建一个容器的容器,外层大小的2(2行),然后里面容器小大为4(4列). int row=2,col=4; vector<vector<int> &g

如何从二维数组中的多个key中获取指定key的值?

精华 LOVEME96 2016-10-21 10:40:19 浏览(1512) 回答(3) 赞(0) 新手求教:二维数组中一般会有多个key,如果我们要获得指定key的值,应该怎么做? 问题标签: php 回答(3) TimberSwift 2016-10-21 第一种:最简单的方法: foreach遍历数组,代码: foreach ($arr as $key => $value) { $arr2[] = $value['name']; } 另一种方法:使用了array_map $arr2 =

perl二维数组

[转载]出处:http://www.cnblogs.com/visayafan/ 1 数组与引用 2 声明的区别 3 访问的区别 4 添加行元素 5 添加列元素 6 访问与打印 6.1 运算符优先级 6.2 访问一个 6.3 遍历 7 切片 1 数组与引用 此处引用相当于C中的指针.二维数组第一列不存储具体元素而是存储指向该行一维数组的引用. 2 声明的区别 数组用如下形式声明:数组名前加@,之后用(). my @AoA = ( [ "fred", "barney"

汇编学习:二维数组遍历

作为正式接触汇编的开篇,本文将研究二维数组的遍历问题.在图像处理中,通常需要遍历图像像素(即二维数组).下面给出三个版本的遍历函数,并研究他们的汇编代码(VC2010编译器,x86版,Release模式). (1)在两层循环内每次根据行列索引计算元素位置. (2)为了避免在内存循环内的乘法计算,可在每次外层循环中计算好行起始地址,内层循环每次执行++操作. (3)将外层循环的乘法操作也去掉,在循环外部先计算好数组的起始地址,内层循环每次执行++操作即可. 测试程序实现对图像的反相操作(即B=25