phpkeyvalue
㈠ 使用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 <= value映射怎麼寫
$arr = array('元素1' => '111' , '元素2');
要是寫上 下標 那麼下標就是你寫的 要是 不寫 php就會默認從 0開始 自動分配下標
$key => $value
這里的 $key 和 $value 就是個變數 寫成 $k=>$v $kk=>$vv $k1=>$v1 或者別的什麼都可以。
㈢ 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
(3)phpkeyvalue擴展閱讀
使用方法:
$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中的值什麼是PHP中的鍵
ID 是 是某個體系中相對唯一的編碼,在php的數組中叫做key
一個key(鍵)對應一個value(值)
php的數組並不是其他語言中數組的意義,因為其他強類型的語言數組一般都是定長,並且 下標 是固定的數字排列。而php的數組(內部實現是用類)的下標(key)可以是數字,也可以是其他的任何 標量 (數字,字元串等),而且當數組的key是數字的時候也可以不連續。如 4,6,7,9,這樣的下標。
$_POST $_GET 都是系統內定的數組
而傳值就是裡面的一個變數。
$_POST['這里是表單中的屬性name的值'] // 這個表達式的值是 表單中屬性value的值
所以,這里理解的ID並不是單純的數字下標,而是能夠代表一個數組內容的實際的key
㈤ PHP中如何給關聯數組的key和value轉碼
php轉碼一般用iconv()方法。
如:iconv("轉碼前的編碼","轉碼後的編碼",需要轉換編碼的字元串);
$result_array=array();//定一個接收結果的空數組。
$array=array("電腦"=>12,"內存"=>3,"顯示器"=>19);//定義數組即要轉換編碼的數組
foreach($sas$key=>$value){//使用foreach循環遍歷數組。
$key=iconv("GBK","UTF-8",$key);//對數組的鍵進行轉碼即要轉換編碼的文字。
$result_array[$key]=$value;//從新拼接一個新的數組(轉碼後)
}
var_mp($result_array)//列印轉碼後的數組進行確認。
㈥ 在PHP中,拆分數組中的key和value兩個屬性,把他們分兩個數組列印
foreach($student_scores as $name=>$value){echo $name;}echo "<br>";foreach($student_scores as $name=>$value){echo $value;}這樣就是會有數組一 'mxj', 'hyj','xcf' ,'lp' , 'zby'.數組二 88,90,89,84,96.
㈦ php 數組判斷key是否存在,如果存在顯示此key的value
你寫的確實不對,我曬一下我改的吧。
<?php
function ch_k_v($a,$aa){//$a:表示錢的 "test",$aa表示數組
$data=array();
if (array_key_exists($a,$aa)) {//存在鍵key
return $data[] =array_values($aa); //可以將值放到一個數組里
}else{//不存在鍵key
return "不存在鍵key";
}
}
$avs=array("a"=>1,"b"=>2,"c"=>3);
var_mp(ch_k_v("ab",$avs));
?>
㈧ php數組的key與value翻轉
可以逆轉,不過其中會有3個值,因為你的b,d,f出現都是一次,所以轉過來以後b,d的位置就會被最後出現的f替換掉
$arr = array("a","b","c","a","c","a",'d','f');
$list = array_count_values($arr);
echo "<pre>";
print_r($list);
foreach($list as $k=>$v){
$arr1[$v]=$k;
}
建議重組
輸出如下:
Array
(
[a] => 3
[b] => 1
[c] => 2
[d] => 1
[f] => 1
)
Array
(
[3] => a
[1] => f
[2] => c
)
㈨ PHP 數組同key的value覆蓋!
相同key的是會被覆蓋,不明白你怎麼會有則樣的需求,你可以吧 "index" =>'H',
"value" =>Array拼成一個字元串作為key的值
㈩ php怎麼把array的key設置為和value相等
參考如下:
$output = array();
foreach ($array as $data) {
$arr = explode('=',$data);
$output[$arr[0]] = $arr[1];
}
以上僅供參考。希望能幫助到你