Ⅰ php如何根據某一個value獲取其key
在一些PHP的場景之中可能會遇到,在PHP的數組中需要根據其中某一個value值來獲取得到其key的值。這個時候就需要使用到PHP數組函數中的array_search()這個方法。
$array = array('test0','test1','test2');
$array1 = array('test0','test1','test2','test1');
$key = array_search('test1',$array);
$key1 = array_search('test1',$array1);
echo $key;
echo $key1;
輸出都是1
如果有重復的value輸出第一個相匹配的key
(1)php根據key獲取value擴展閱讀
使用方法:
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
//array_key_exists()的使用方法
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
}
//相關函數有
array_keys() - Return all the keys or a subset of the keys of an array
array_values() - Return all the values of an array
array_key_exists() - Checks if the given key or index exists in the array
Ⅱ php怎麼用問號傳值
例如:
在aa.php頁面中寫:(問號後面為要傳的值)
<a href="bb.php?name=jhy&sex=男">問號傳值</a>
在bb.php頁面中寫(獲取所傳的值):
<?php
$name=$_GET["name"];
$sex=$_GET["sex"];
echo $name."".$sex;
?>
你會在bb.php頁面中看到地址欄包含bb.php?name=jhy&sex=男,頁面中會得到你要傳的結果。
Ⅲ 使用php Memcache模塊如何正確遍歷所有KEY以及VALUE
在php提供的用於與memcached交互的擴展模塊中有memcached與memcache,前者提供方法getAllKeys用於遍歷所有Memcached伺服器上的key,但是並不保證原子操作,而後者卻沒有提供任何方法,雖然在PHP官方
文檔中有人給出使用方法getExtendedStats來間接獲取Memcached伺服器上的所有key,但是給出的代碼是有不少坑的,如果拿來就用,對於cluster的memcached伺服器而言,有些問題就需要指出來。
下面將給出官方文檔中的代碼,並指出可能面臨的問題,代碼如下:
<?php
/**
*Functiontogetallmemcachekeys
*@authorManishPatel
*@Created:28-May-2010
*/
functiongetMemcacheKeys(){
$memcache=newMemcache;
$memcache->connect('127.0.0.1',11211)ordie("");
$list=array();
$allSlabs=$memcache->getExtendedStats('slabs');
$items=$memcache->getExtendedStats('items');
foreach($allSlabsas$server=>$slabs){
foreach($slabsAS$slabId=>$slabMeta){
$cmp=$memcache->getExtendedStats('cachemp',(int)$slabId);
foreach($cmpAS$keys=>$arrVal){
foreach($arrValAS$k=>$v){
echo$k."<br>";
}
}
}
}//EOgetMemcacheKeys()?>
在上述代碼中,如果用於獲取單個memcached伺服器上的key,是不存在任何問題,但是獲取連接池中的多個memcached所有key就存在問題,會發現列印出重復的key,問題就在於當使用getExtendedStats用去特定$slabID
上的信息時,返回的是連接池中所有的伺服器上的特定$slabId的存儲的keys信息。當$server為"127.0.0.1:11214"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
當$server為"127.0.0.1:11216"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
Ⅳ php根據一組key值返回元素
<?php
$source = array('a' => '111', 'b' => '222', 'c' => '33333', 'd' => '4444');
$needKey = array('a', 'c');
$needKey = array_flip($needKey); //調轉鍵值使之可比。array('a'=>0, 'c'=>1)
$array = array_intersect_ukey($source,$needKey,'key_compare_func'); //array_intersect_ukey用回調函數比較鍵名來計算數組的交集
var_mp($array);
function key_compare_func($key1, $key2){
if ($key1 == $key2)
return 0;
else if ($key1 > $key2)
return 1;
else
return -1;
}
//End_php
Ⅳ PHP怎麼搜索數組的鍵並查找到對應的值
array_search()函數在一個數組中搜索一個指定的值,如果找到則返回相應的鍵,否則返回FALSE1.搜索關聯數組鍵如果在一個數組中找到一個指定的鍵,函數array_key_exists()返回TRUE,否則返回FALSE。其形式如下:boolean array_key_exists(mixed key, array array)下面的例子將在數組鍵中搜索Ohio,如果找到,將輸出這個州加入育關信息:$state["Delaware"]="December 7,1787";$state["Pennsylvania"]="December 12, 1787";$state["Ohio"]="March l,1803";86 第5章數 組if (array_key_exists("Ohio", $state》printf("Ohio joined the Union on %s", $state["Ohio"]);結果如下:2.搜索關聯數組值array_search()函數在一個數組中搜索一個指定的值,如果找到則返回相應的鍵,否則返回FALSE。其形式如下:下面的例子在$state中搜索一個特定的日期(December7),如果找到,則返回相應州的有關信息:$state["Ohio"] = "March l"; .$statef"Delaware"l = "December 7";$state["Pennsylvania"] = "December 12u;$founded = array_search("December 7", $state),i+ ($founded) printf("%s was founded on %s.", $founded, $state[$founded]);輸出如下:Delaware was十ounded on December 7.5.4.2獲取數組鍵array_keys()函數返回一個數組,其中包含所搜索數組中找到的所有鍵。其形式知下:array array_keys(array array【J mixed search_value])如果包含可選參數search value,則只會返回與該值匹配的鍵。下面的例子將輸出$state數組中找到的所有鍵值:$state["Delaware"] = "December 7, 1787";$state["Pennsylvania"] = "December 12, i787";$state["New Jersey"] = "December 18, 1787";$keys = array_keys($state);print_r($keys);輸出如下:5.4.3獲取數組值array_values()函數返回一個數組中的所有值,並自動為返回的數組提供數值索引。其形式如下:array array_values(array array)5.5遍歷數組 87下面的例子將獲取$population中找到的各州人口數:$population=array("Ohio"=>"11,421,267", "Iowa"=>"2,936,760");print_r(array_values($population》;這個例子的輸出如下:5.5遍歷數組通常需要遍歷數組並獲得各個鍵或值(或者同時獲得鍵和值),所以毫不奇怪,PHP為此提供了一些函數來滿足需求。許多函數能完成兩項任務,不僅能獲取當前指針位置的鍵或值,還能將指針移向下一個適當的位置。本節將介紹這些函數。5.5.1 獲取當前數組鍵key()函數返回input_array中當前指針所在位置的鍵。其形式如下:mixed key(array array)下面的例子通過迭代處理數組並移動指針來輸出$capitals數組的鍵:$capitals=array("Ohio"=>"Columbus", "Iowa"=>"Des Moines");echo "<p>Can you name the capitals of these states?</p>";while($key=key($capitals》{printf("%s <br,>「,$key);next($capitals);,將返回以下結果:Ohio
Ⅵ php數組$key,$val問題
foreach($c as $d){echo $d;}這樣就可以了!!
這個foreach結構中的$c as $d已經將$c中對應的每個元素的數組值放在$d里了!!
完整的是這樣的
foreach($c as $key=>$value)
你上面的$d就相當於這個$value是值
$key是鍵值,你可以自己測試下
<?php
$a=array("a","b","c","d");
$b=array("Cat","Dog","Horse","Cow");
$c=array_combine($a,$b);
foreach ($c as $key=>$value) {echo $key,":",$value,"<br/>";}
?>輸出
a:Cat
b:Dog
c:Horse
d:Cow