php二維數組鍵值
㈠ php二維數組如何去掉重復值
方法一:
//二維數組去掉重復值
functionarray_unique_fb($array2D){
foreach($array2Das$v){
$v=join(',',$v);//降維,也可以用implode,將一維數組轉換為用逗號連接的字元串
$temp[]=$v;
}
$temp=array_unique($temp);//去掉重復的字元串,也就是重復的一維數組
foreach($tempas$k=>$v){
$temp[$k]=explode(',',$v);//再將拆開的數組重新組裝
}
return$temp;
}
方法二:
//二維數組去掉重復值,並保留鍵值
functionarray_unique_fb($array2D){
foreach($array2Das$k=>$v){
$v=join(',',$v);//降維,也可以用implode,將一維數組轉換為用逗號連接的字元串
$temp[$k]=$v;
}
$temp=array_unique($temp);//去掉重復的字元串,也就是重復的一維數組
foreach($tempas$k=>$v){
$array=explode(',',$v);//再將拆開的數組重新組裝
//下面的索引根據自己的情況進行修改即可
$temp2[$k]['id']=$array[0];
$temp2[$k]['title']=$array[1];
$temp2[$k]['keywords']=$array[2];
$temp2[$k]['content']=$array[3];
}
return$temp2;
}
㈡ php數組、鍵名、索引、鍵值有什麼區別
數悄宴組的根據類型來分,分為關聯數組和數字索引數組。
㈢ php 二維數組轉換為一維鍵值對數組
function transIndex($index, $Data) { $return = array(); foreach ($index as $key => $value) { $return[$value] = $Data[$key]; } return $return;}
㈣ php多維數組問題,,高分求高手幫幫,,
1、二維轉一維:
function fixArray($r,$k)
{
$out = array();
foreach ($r as $key=>$val) {
if (is_array($val)){
$out = array_merge($out, fixArray($val,$key));
} else{
$out["'$key'"] = $val;//$val;
}
}
return $out;
}
$arr =array(
'2'=>array('5'=>'ok','6'=>'good'),
'3'=>array('7'=>'yes','8'=>'cool'),
'4'=>array('9'=>'look')
);
$output = fixArray($arr,"");
print_r($output);
2、你說的帶主鍵名3,基本上不可能實現,因為如果鍵名相同,則值會互相覆蓋,或者還是需要用2維數組。
㈤ PHP數組提交數據的問題
這個很簡單啊,文本框用[]可以直接用獲取數組格式,例如
產品1:<inputtype="text"name="name[]">
<inputtype="text"name="price[]">
產品2:<inputtype="text"name="name[]">
<inputtype="text"name="price[]">
在php里用$_POST['name']就能獲取產品名稱這個數組,然後用循環遍歷這個名稱數組,把產品信息 重組成新數組。
foreach($_POST['name']as$k=>$v){
$data[$k]['name']=$_POST['name'][$k];
$data[$k]['price']=$_POST['price'][$k];
}
這個$data就是所有產品數據,數據完整性就自己去把控了
㈥ php合並兩個二維數組,如果兩個二維數組的id值相等,則合並為一個新的數組
id本應該是唯一性的鍵值,利用好就行。以下輸出沒有對id排序,因為覺得沒必要。
需要時可以再排。
function mergeById(&$a,&$b){
$c=array();
foreach($a as $e) $c[$e['id']]=$e;
foreach($b as $e) $c[$e['id']]=isset($c[$e['id']])? $c[$e['id']]+$e : $e;
return $c;
}
$a=//數組一;
$b=//數組二;
var_mp(mergeById($b,$a));
===========
array
1 =>
array
'id' => int 1
'name' => string 'test' (length=4)
'subject' => string 'subject' (length=7)
2 =>
array
'id' => int 2
'name' => string 'test2' (length=5)
3 =>
array
'id' => int 3
'name' => string 'test3' (length=5)
'subject' => string 'subject3' (length=8)
㈦ PHP怎樣判斷一個數組中是否有的鍵值為空
一、for循環
最簡單也是最直接的方法,用for循環來遍歷數組。對於已知維數的數組可以判斷,但如果是未知的多維數組,該怎麼辦?
二、implode();
用implode()將數組輸出為字元串,判斷輸出的字串是否為空。初看上去似乎是個不錯的方法,可惜跟上一點一樣,對於二維以上數組就不行了。舉個例子:
$arr= array(array(),array(),array());
$str = implode(',',$arr);
if(empty($str)) echo "空";
else echo "非空";
很明顯$arr是個含有三個空數組的二維數組,應該也算是空的,可是輸出的確是非空。判斷失敗。
三、count();
不得不承認,我最先想到的也是這個函數,網上也有好多網友把這個當答案,並以為已經解決問題。可是請看下面的例子:
$arr= array("","","");
echo count($arr);
四、in_array('', $arr));
不多說,還是看例子:
$arr= array("d","s","");
echo in_array('', $arr);
這個只能說明數組中有空的元素,不能證明數組是空的。很明顯也不行
五、empty();
這個cpyeh覺得跟前面幾種方法差不多
$arr= array("","","");
if(empty($arr)) echo "空";
else echo "非空";
結果還是非空
可以在以上例子上加一句print_r($arr);看看...
基本上cpyeh能想到的加上網上找到的也就以上這些,不明白的是網上居然有人會提到is_array(),可能是對php還不是很了解,需要多翻翻手冊。很遺憾最終還是找不到一個完美的解決方法,不過對於一般的應用,第一種或第二種應該可以滿足了,cpyeh選了方便的第二種。如果對以上例子有疑問歡迎留言在此互相交流。
後計:
如果判斷一個二維數組可以這樣,同時幹掉那些空的:
$this->dataObj->getTotalScore(&$resultinfo,$uids);
$judge = implode("",$resultinfo);
if(!empty($judge))//數組不為空
{ //去掉數組鍵值為空
foreach($resultinfo as $key =>$getoutvisnull)
{
if(empty($getoutvisnull))
{
unset($resultinfo[$key]);
}
}
$allscorearray[] = $resultinfo;
}