1. php foreach 遇到空數組怎麼辦
PHP刪除數組中空值的方法:
1.去掉數組的空值是都是強寫foreach或者while的,利用這兩個語法結構來刪除數組中的空元素,簡單代碼如下:
<?php
foreach($arras$k=>$v){
if(!$v)
unset($arr[$k]);
}
?>
這種方法的效率不是很高
2. array_filter函數的功能是利用回調函數來對數組進行過濾,一直都以為用回調函數才能處理,卻沒有發現手冊下面還有一句,如果沒有回調函數,那麼默認就是刪除數組中值為false的項目。代碼如下:
<?php
$entry=array(
0=>'foo',
1=>false,
2=>-1,
3=>null,
4=>''
);
print_r(array_filter($entry));
?>
輸出值為:
Array
(
[0]=>foo
[2]=>-1
)
這種方法的效率不錯
2. PHP代碼實現1)刪除整個數組2)刪除數組中指定的元素3)刪除重復的元素
$cars=array("Volvo","BMW","Toyota","BMW","23","33","23","67","23");
$cars2 = array_unique($cars);//元素去重
$cars2 = array_merge_recursive($cars2);//合並(因為去重後索引號不重新整理)
$delCars = array_splice($cars2,1,2);//從數組中移除索引號1開始共計2個元素
array_splice($cars2,0,(count($cars2)));//清空數組內容
unset($cars2);//或 $cars2 = null ,刪除數組
3. 刪除數組元素實用的PHP數組函數
/**
*
從數組中刪除空白的元素(包括只有空白字元的元素)
*
*
@param
array
$arr
*
@param
boolean
$trim
*/
復制代碼
代碼如下:
function
array_remove_empty(&
$arr,
$trim
=
true)
{
foreach
($arr
as
$key
=>
$value)
{
if
(is_array($value))
{
array_remove_empty($arr[$key]);
}
else
{
$value
=
trim($value);
if
($value
==
'')
{
unset($arr[$key]);
}
elseif
($trim)
{
$arr[$key]
=
$value;
}
}
}
}
/**
*
將一個二維數組轉換為
hashmap
*
*
如果省略
$valueField
參數,則轉換結果每一項為包含該項所有數據的數組。
*
*
@param
array
$arr
*
@param
string
$keyField
*
@param
string
$valueField
*
*
@return
array
*/
復制代碼
代碼如下:
function
array_to_hashmap(&
$arr,
$keyField,
$valueField
=
null)
{
$ret
=
array();
if($valueField)
{
foreach
($arr
as
$row)
{
$ret[$row[$keyField]]
=
$row[$valueField];
}
}
else
{
foreach($arr
as
$row)
{
$ret[$row[$keyField]]
=
$row;
}
}
return
$ret;
}
4. php中刪除數組中的某一些元素
array_splice函數可以刪除數組中的元素(只是該函數的功能之一),array_splice用法如下:
array_splice
—
把數組中的一部分去掉並用其它值取代
array array_splice( array &$input, int $offset[, int $length = 0 [, mixed $replacement ]] )把
input
數組中由offset
和
length指定的單元去掉,如果提供了
replacement
參數,則用其中的單元取代。
input:輸入的數組。
offset:如果
offset
為正,則從
input數組中該值指定的偏移量開始移除。如果
offset為負,則從
input
末尾倒數該值指定的偏移量開始移除。
length:如果省略
length,則移除數組中從offset到結尾的所有部分。
如果指定了
length並且為正值,則移除這么多單元。
如果指定了
length並且為負值,則移除從
offset
到數組末尾倒數length
為止中間所有的單元。
小竅門:當給出了replacement
時要移除從
offset到數組末尾所有單元時,用count($input)
作為
length。
replacement:如果給出了
replacement
數組,則被移除的單元被此數組中的單元替代。
示例,刪除數組$inputArr的第5~10個元素(從0開始數,包括第5個和第10個,共6個元素)
array_splice($inputArr,5,6);
5. PHP怎麼刪除二維數組的空數組
$array2D=array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));
print_r($array2D);
print_r(unique_arr($array2D,true));
6. php數組元素值的修改和刪除問題
刪除數組元素和刪除一個變數一樣
unset($strArray['key']);
更新是直接賦值
$strArray['key'] = 'new var';
=================
這種事情我做過, 關鍵是把 $strArray 放在文件中,以及對這個數組的操作.
1.存放,比如放在 strarray.php 中
$fp = fopen('strarray.php','w');
fwrite($fp,'<?php'."\n".'$strArray = '.var_export($strArray,1).";\n?>");
fclose($fp);
2. 讀取
include 'strarray.php';
3. 刪除
unset($strArray['key'])
====
要注意的是,如果使用函數來做這些操作,strArray是全局變數,在function中要有
global $strArray;
這句聲明
我試過使用這個方法來存放經緯度數據,好處是不用xml文件或資料庫,速度也非常快
7. PHP去除數組值兩邊的空格,分析一下這段代碼的原理
①如果是一維數組,你用array_map執行函數的時候,傳到$input里的都是值。此時在TrimArray裡面直接執行trim清除空格。
請注意,array_map的作用是針對整個數組的。此時只需執行一次,即可完成對整個一維數組的去空格處理。這個應該是你疑惑的關鍵點。可參考網頁鏈接
②如果是多維數組,傳到$input里的還是數組,此時才會執行遞歸操作,將多維數組逐步拆解成一維數組,後續操作同①