在PHP中获取数组的索引值
我有一个数组:
$list = array('string1', 'string2', 'string3');
我想得到一个给定值的索引(即1
为string2
和2
为string3
)
我只想要的是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;