數組的索引值我有一個數組:獲取在PHP
$list = array('string1', 'string2', 'string3');
我想要得到的指數給定值(即1
爲string2
和2
爲string3
)
所有我要的是陣列中的串的位置
- 字符串1是0
- 字符串2爲1
- string3是2
如何做到這一點?
數組的索引值我有一個數組:獲取在PHP
$list = array('string1', 'string2', 'string3');
我想要得到的指數給定值(即1
爲string2
和2
爲string3
)
所有我要的是陣列中的串的位置
如何做到這一點?
array_search
就是這樣做的。
從docs:
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
你可以循環陣列上手動和查找索引,但爲什麼這樣做時,有該功能。這個函數總是返回一個鍵,它可以很好地處理關聯數組和正常數組。
這將返回鍵,而不是索引。在你的例子中,鍵是方便的值的索引。 – 2010-06-02 15:47:07
@smink,OP的數組是非關聯數組,所以它工作正常。 – 2010-06-02 15:48:15
對不起,我沒有指定數組的類型。我使用的陣列是一個多維數組請參閱我的答案的解決方案 – 2010-06-03 04:38:52
嘗試使用array_keys PHP函數。
$key_string1 = array_keys($list, 'string1');
array_search應該可以正常工作,只是測試這一點,它返回預期的關鍵:
$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));
如果你只是做了幾個(和/或陣列尺寸很大),那麼你是在array_search的正確軌道上:
$list = array('string1', 'string2', 'string3');
$k = array_search('string2', $list); //$k = 1;
如果你想要所有(或其中很多),一個循環將prob你更好:
foreach ($list as $key => $value) {
echo $value . " in " . $key . ", ";
}
// Prints "string1 in 0, string2 in 1, string3 in 2, "
foreach是我需要的 – zzapper 2014-07-17 10:40:58
你能更具體一點嗎?
$key = array_search('string2',$list)
適合我。你想完成更復雜的事情嗎?
其他人建議array_search()
它給出了找到值的數組元素的關鍵。你可以保證數組鍵是連續的整數通過使用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_values()沒用」 ..應該是「array_search()是沒有用的」 – Vex 2010-06-02 16:03:59
這段代碼應該和新的例程一樣,使用正確的多維數組。
$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));
這個問題沒有提到任何關於多維數組(OP在其他答案中的評論意味着這個答案是他實際上在尋找的,但是如果你只是閱讀原文問題和這個答案,你的意思是沒有意義的) – StubbornShowaGuy 2016-07-29 04:58:38
//或考慮您的陣列結構:
$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()將創建一個零索引數組,然後您可以使用array_search()繞過使用for循環的搜索進行搜索。
$list = array('string1', 'string2', 'string3');
$index = array_search('string2',array_values($list));
$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;
你偷很多人的時間內爲您可怕的建制問題。 – 2010-06-03 10:11:04
我的一位科技作家朋友告訴我:「除非你提出正確的問題,否則你無法得到正確答案。」 – 2010-06-03 22:05:48
這是舊的....但我想知道爲什麼:_「我嘗試array_search,但它是沒有用的」_ – dsdsdsdsd 2014-02-13 08:22:43