Php 在多维数组中查找值

Php 在多维数组中查找值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我必须在多维数组中找到值,数组的大小并没有定义。 假设用户输入1601,结果将是011。 如果是1605,根据数组,结果将是015 array (size=6) 0 => array (size=2) 0 => string 'Zipcode' (length=7) 1 => string 'Territory Code' (length=14) 1 => array

我必须在多维数组中找到值,数组的大小并没有定义。 假设用户输入1601,结果将是011。 如果是1605,根据数组,结果将是015

   array (size=6)
      0 => 
        array (size=2)
          0 => string 'Zipcode' (length=7)
          1 => string 'Territory Code' (length=14)
      1 => 
        array (size=2)
          0 => string '1601' (length=4)
          1 => string '011' (length=3)
      2 => 
        array (size=2)
          0 => string '1602' (length=4)
          1 => string '012' (length=3)
      3 => 
        array (size=2)
          0 => string '1603' (length=4)
          1 => string '013' (length=3)
      4 => 
        array (size=2)
          0 => string '1604' (length=4)
          1 => string '014' (length=3)
      5 => 
        array (size=2)
          0 => string '1605' (length=4)
          1 => string '015' (length=3)

如果
Zipcode
是唯一的,则可以执行以下操作:

echo array_column($array, 1, 0)[1601];
或者如果
地区代码
是唯一的:

echo array_search(1601, array_column($array, 0, 1), true);
从多维数组中提取列以创建一维数组

数组数组\列(数组$input,混合$column\键[,混合$index\键=null])

第二个参数
$column\u key
定义要从多维数组中获取哪些列作为一维数组的值。第三个参数
$index_key
定义了要用作返回的一维数组的键的列。如果未定义
$index\u key
,则将对数组进行数字枚举

第一个代码示例

因此,第一个示例提取一个数组,例如:

array(1601 => '011', 1602 => '012')
array('011' => 1601, '012' => 1602)
使用值
1601
作为键,可以获得所需的输出
011

第二个代码示例

第二个示例使用一个数组,例如:

array(1601 => '011', 1602 => '012')
array('011' => 1601, '012' => 1602)
并使用搜索
1601
,以获取所需输出的键
011

有关第二个和第三个参数的作用,请参见以下两个示例:

print_r(array_column($array, 1, 0));
print_r(array_column($array, 0, 1));

如果
Zipcode
是唯一的,则可以执行以下操作:

echo array_column($array, 1, 0)[1601];
或者如果
地区代码
是唯一的:

echo array_search(1601, array_column($array, 0, 1), true);
从多维数组中提取列以创建一维数组

数组数组\列(数组$input,混合$column\键[,混合$index\键=null])

第二个参数
$column\u key
定义要从多维数组中获取哪些列作为一维数组的值。第三个参数
$index_key
定义了要用作返回的一维数组的键的列。如果未定义
$index\u key
,则将对数组进行数字枚举

第一个代码示例

因此,第一个示例提取一个数组,例如:

array(1601 => '011', 1602 => '012')
array('011' => 1601, '012' => 1602)
使用值
1601
作为键,可以获得所需的输出
011

第二个代码示例

第二个示例使用一个数组,例如:

array(1601 => '011', 1602 => '012')
array('011' => 1601, '012' => 1602)
并使用搜索
1601
,以获取所需输出的键
011

有关第二个和第三个参数的作用,请参见以下两个示例:

print_r(array_column($array, 1, 0));
print_r(array_column($array, 0, 1));

我编写了一个嵌套函数来执行此操作:

$read=[
    ['Honar','607836545742426','IRO7P0001'],
    ['Danial','2304906587905','IRO7KHEP01'],
    ['Key'=>['sub_key'=>'sub_value']]
];

function is_exists_value($array,$needle){

    if(!is_array($array) || is_null($needle))
        exit("Error: check input");

    if (array_key_exists($needle, $array)){
        return true;
    }elseif(in_array($needle,$array)){
        return true;
    }else{
        foreach ($array as $value)
            if(is_array($value))
                if(is_exists_value($value,$needle))
                    return true;
    }

    return false;
}

var_dump(is_exists_value($read,"sub_value")); // Return True 
var_dump(is_exists_value($read,"Key")); // Return True 

我编写了一个嵌套函数来执行此操作:

$read=[
    ['Honar','607836545742426','IRO7P0001'],
    ['Danial','2304906587905','IRO7KHEP01'],
    ['Key'=>['sub_key'=>'sub_value']]
];

function is_exists_value($array,$needle){

    if(!is_array($array) || is_null($needle))
        exit("Error: check input");

    if (array_key_exists($needle, $array)){
        return true;
    }elseif(in_array($needle,$array)){
        return true;
    }else{
        foreach ($array as $value)
            if(is_array($value))
                if(is_exists_value($value,$needle))
                    return true;
    }

    return false;
}

var_dump(is_exists_value($read,"sub_value")); // Return True 
var_dump(is_exists_value($read,"Key")); // Return True 

如果不使用
array\u column()
anywhere,你就不能写答案,不是吗:)?这些都是宝石,伙计!:-)@你能解释一下echo array_column($array,1,0)[1601]吗;什么是1,0值?如果不使用
array\u column()
anywhere,你就无法写出答案,不是吗:)?这些是gems buddy!:-)@你能解释一下echo array_column($array,1,0)[1601]吗;什么是1,0值?我回答了,但让我明白的是,所有索引1值都是3个字符,但显示长度为1?@AbraCadaver这些必须是一些健康的字符,只占字符的1/3。我对你的问题有一个答案。但根据你提出的问题,我不知道这是否正确。它返回第二个索引。我回答了,但让我明白的是,所有索引1的值都是3个字符,但显示长度为1?@abracadver这些必须是一些健康的字符,仅占字符的1/3。我对你的问题有一个答案。但根据你提出的问题,我不知道这是否正确。它返回第二个索引。