Php 在多维数组中查找值
我必须在多维数组中找到值,数组的大小并没有定义。 假设用户输入1601,结果将是011。 如果是1605,根据数组,结果将是015Php 在多维数组中查找值,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
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。我对你的问题有一个答案。但根据你提出的问题,我不知道这是否正确。它返回第二个索引。