php数组\搜索关联数组
我试图通过搜索数组的值从数组中获取密钥。在下面的代码中,我不明白的是,为什么当php数组\搜索关联数组,php,arrays,Php,Arrays,我试图通过搜索数组的值从数组中获取密钥。在下面的代码中,我不明白的是,为什么当$url文件扩展名为“xls”时找不到键,但当它是“php”时却可以找到键。我注意到一个类似的问题,即无法使用and“查找”“xls” 首先,如果$extension显示想要的值(xls),请尝试调试$extension,尝试交换键和val,并尝试通过新键查找: $aux = array(); foreach( $arr as $key => $val ) { $aux[ $val ] = $key;
$url
文件扩展名为“xls”
时找不到键,但当它是“php”
时却可以找到键。我注意到一个类似的问题,即无法使用and“查找”“xls”
首先,如果$extension显示想要的值(xls),请尝试调试$extension,尝试交换键和val,并尝试通过新键查找:
$aux = array();
foreach( $arr as $key => $val )
{
$aux[ $val ] = $key;
}
因此,您尝试查找当前值:
if ( isset( @$aux[ $extension ] ) ) echo "I found the current extension";
else "extension not found!";
首先,如果$extension显示想要的值(xls),请尝试调试$extension,尝试交换键和val,并尝试通过新键查找:
$aux = array();
foreach( $arr as $key => $val )
{
$aux[ $val ] = $key;
}
因此,您尝试查找当前值:
if ( isset( @$aux[ $extension ] ) ) echo "I found the current extension";
else "extension not found!";
您的搜索工作正常,但您正在搜索的阵列存在缺陷。元素1(xlsx)覆盖元素0,因为键相同
$arr=array(
'excel_file'=>'xls',
'excel_file'=>'xlsx', // This overwrites the line above.
'php_file' =>'php'
);
翻转元素,然后只需检查键是否存在:
$arr=array(
'xls'=>'excel_file',
'xlsx'=>'excel_file',
'php'=>'php_file'
);
if (isset($arr[$extension])) {
// do stuff
echo $arr[$extension];
}
您的搜索工作正常,但您正在搜索的阵列存在缺陷。元素1(xlsx)覆盖元素0,因为键相同
$arr=array(
'excel_file'=>'xls',
'excel_file'=>'xlsx', // This overwrites the line above.
'php_file' =>'php'
);
翻转元素,然后只需检查键是否存在:
$arr=array(
'xls'=>'excel_file',
'xlsx'=>'excel_file',
'php'=>'php_file'
);
if (isset($arr[$extension])) {
// do stuff
echo $arr[$extension];
}
您需要翻转数组的键和值,不可能将多个值与给定键关联。交换键和值时,您可以使用来执行所需的功能。@DaveRandom谢谢。看起来这也可以通过给每个键指定其唯一的值来解决,比如
'excel\u file xls'
和'excel\u file xlsx'
。您介意翻动键和值来回答吗?您需要翻动数组的键和值,不可能将多个值与给定键关联。交换键和值时,您可以使用来执行所需的功能。@DaveRandom谢谢。看起来这也可以通过给每个键指定其唯一的值来解决,比如'excel\u file xls'
和'excel\u file xlsx'
。你介意翻动键和值来回答吗?不需要设置Isset,只要(@$aux[$extension])你应该使用Isset并删除关闭操作符@。好习惯。Isset不是必需的,只要(@$aux[$extension])您应该使用Isset并删除shut up操作符@,就可以了。好习惯。你也可以选择一个excel\u文件数组,这可能更有效。你也可以选择一个excel\u文件数组,这可能更有效。