Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组\搜索关联数组_Php_Arrays - Fatal编程技术网

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文件数组,这可能更有效。