在PHP中获取数组的索引值

我有一个数组:

$list = array('string1', 'string2', 'string3'); 

我想得到一个给定值的索引(即1string22string3

我只想要的是arrays中的string的位置

  • string1是0
  • string2是1
  • string3是2

如何做到这一点?

array_search是做到这一点的方法。

从文档 :

 $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); $key = array_search('green', $array); // $key = 2; $key = array_search('red', $array); // $key = 1; 

你可以手动遍历数组并find索引,但是为什么当它有一个函数。 这个函数总是返回一个键,并且可以和关联数组和正常数组一起工作。

如果你只是做了其中的一些(和/或数组的大小),那么你是在array_search的正确轨道上:

 $list = array('string1', 'string2', 'string3'); $k = array_search('string2', $list); //$k = 1; 

如果你想要所有的(或者很多),一个循环会让你更好:

 foreach ($list as $key => $value) { echo $value . " in " . $key . ", "; } // Prints "string1 in 0, string2 in 1, string3 in 2, " 

其他人build议array_search()给出数组元素的关键在哪里find值。 您可以通过使用array_values()来确保数组键是连续的整数:

 $list = array(0=>'string1', 'foo'=>'string2', 42=>'string3'); $index = array_search('string2', array_values($list)); print "$index\n"; // result: 1 

你说你的问题array_search()是没有用的。 你能解释一下为什么? 你尝试了什么?它不能满足你的需求?

//或者考虑你的数组结构:

 $array = array( 'string1' => array('a' => '', 'b' => '', 'c' => ''), 'string2' => array('a' => '', 'b' => '', 'c' => ''), 'string3' => array('a' => '', 'b' => '', 'c' => ''), ); 

//你可以

 function findIndexOfKey($key_to_index,$array){ return array_search($key_to_index,array_keys($array)); } 

//执行

 print "\r\n//-- Method 1 --//\r\n"; print '#index of: string1 = '.findIndexofKey('string1',$array)."\r\n"; print '#index of: string2 = '.findIndexofKey('string2',$array)."\r\n"; print '#index of: string3 = '.findIndexofKey('string3',$array)."\r\n"; 

//或者

 print "\r\n//-- Method 2 --//\r\n"; print '#index of: string1 = '.array_search('string1',array_keys($array))."\r\n"; print '#index of: string2 = '.array_search('string2',array_keys($array))."\r\n"; print '#index of: string3 = '.array_search('string3',array_keys($array))."\r\n"; 

/ / recursersively

 print "\r\n//-- Method 3 --//\r\n"; foreach(array_keys($array) as $key => $value){ print '#index of: '.$value.' = '.$key."\r\n"; } 

//输出

 //-- Method 1 --// #index of: string1 = 0 #index of: string2 = 1 #index of: string3 = 2 //-- Method 2 --// #index of: string1 = 0 #index of: string2 = 1 #index of: string3 = 2 //-- Method 3 --// #index of: string1 = 0 #index of: string2 = 1 #index of: string3 = 2 

问题是你没有数组的索引。
使用array_values()将创build一个零索引数组,然后您可以使用array_search()绕过需要使用for循环进行search。

 $list = array('string1', 'string2', 'string3'); $index = array_search('string2',array_values($list)); 

试试array_keys PHP函数。

 $key_string1 = array_keys($list, 'string1'); 

你能更具体一点吗?

 $key = array_search('string2',$list) 

对我来说工作得很好。 你想完成更复杂的事情吗?

array_search应该可以正常工作,只要testing一下,就可以按照预期返回键值:

 $list = array('string1', 'string2', 'string3'); echo "Key = ".array_search('string1', $list); echo " Key = ".array_search('string2', $list); echo " Key = ".array_search('string3', $list); 

或者对于索引,你可以使用

 $list = array('string1', 'string2', 'string3'); echo "Index = ".array_search('string1', array_merge($list)); echo " Index = ".array_search('string2', array_merge($list)); echo " Index = ".array_search('string3', array_merge($list)); 

这个代码应该和新的例程一样,使用正确的multidimensional array。

  $arr = array( 'string1' => array('a' => '', 'b' => '', 'c' => ''), 'string2' => array('a' => '', 'b' => '', 'c' => ''), 'string3' => array('a' => '', 'b' => '', 'c' => '') ); echo 'Index of "string2" = '. array_search('string2', array_keys($arr)); 
 $find="Topsite"; $list=array("Tope","Ajayi","Topsite","Infotech"); $list_count=count($list); sort($list); for($i=0;$i<$list_count;$i++) { if($list[$i]==$find){ $position=$i; } } echo $position;