我必须在多维数组中找到值,未定义数组的大小。 假设用户输入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)
答案 0 :(得分:4)
如果Zipcode
是唯一的,那么你可以这样做:
echo array_column($array, 1, 0)[1601];
或Territory Code
是唯一的:
echo array_search(1601, array_column($array, 0, 1), true);
array_column()
从多维数组中提取一列以创建一维数组。
array array_column(array $ input,mixed $ column_key [,mixed $ index_key = null])
第二个参数$column_key
,用于定义要从多维数组中作为值到达一维数组的列。第三个参数$index_key
定义了您要用作哪一列作为您获得的一维数组的键。如果未定义$index_key
,则数组将被枚举。
第一个代码示例
因此,第一个示例提取了一个数组,如:
array(1601 => '011', 1602 => '012')
使用值1601
作为键,您可以获得所需的输出011
。
第二个代码示例
第二个示例使用如下数组:
array('011' => 1601, '012' => 1602)
使用array_search()
搜索1601
以获取密钥011
,这是所需的输出。
请参阅以下两个示例,了解第二个和第三个参数的作用:
print_r(array_column($array, 1, 0));
print_r(array_column($array, 0, 1));
答案 1 :(得分:0)
我编写了一个执行此操作的嵌套函数:
$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