1. php中如何去除一個數組中的空元素
array_filter() 函數用回調函數過濾數組中的值。
該函數把輸入數組中的每個鍵值傳給回調函數。如果回調函數返回 true,則把輸入數組中的當前鍵值返回結果數組中。數組鍵名保持不變。
例如:
<?php
function test_odd($var)
{
return($var & 1);
}
$a1=array("a","b",2,3,4);
print_r(array_filter($a1,"test_odd"));
?>
運行結果:Array ( [3] => 3 )
(1)php刪除一維數組擴展閱讀:
循環遍歷數組,把有值的元素放進一個新數組中。
$arr = array();
foreach ($urlArr as $key => $val) {
if (empty($val)) {continue;}
$arr[] = $val;
}
$arr是去除空元素的新數組。
2. php如何從數組中刪除一個元素
如果要在某個數組中刪除一個元素,可以直接用的unset,例子代碼:
<?php
$arr
=
array('a','b','c','d');
print_r($arr);
unset($arr[1]);
print_r($arr);
?>
以上代碼輸出的結果如下:
E:\TEMP\文件\exp>a.phpArray(
[0]
=>
a
[1]
=>
b
[2]
=>
c
[3]
=>
d)Array(
[0]
=>
a
[2]
=>
c
[3]
=>
d)
3. php 刪除多維數組指定元素
foreach($data_arras$key=>$data){
if(in_array('id',array_keys($data))){
unset($data_arr[$key]['id']);
}
}
4. php 怎麼刪除第一個數組
刪除第一個數組:unset($arr[0]);
刪除數組第一元素
$arr1=array('apple','banana','orange');
$result1=array_shift($arr1);
print_r($result1);
print_r($arr1);
5. php如何刪除兩個數組中相同的元素
首先,我看到這個問題中描述是「如何刪除兩個數組中相同的元素」,雖然那個人寫了一大堆,竟然用的是array_unique(),從分析到給出的demo一直在解決如何刪除「一個」數組中「重復」的元素。汗!答非所問的答案竟然會被採納。
這里,簡單分析一下提問者的真實意圖,分以下2種情況:
1.現在有2個一維數組, $arr1和$arr2,現在要刪除 $arr1 中存在於 $arr2 的元素。
解決方案:使用array_diff對比返回在 array1 中但是不在 array2 及任何其它參數數組中的值,代碼如下:
<?php
$arr1=array(1,2,3,4);
$arr2=array(2,4);
//這一句即可
$arr1=array_diff($arr1,$arr2);
var_mp($arr1);
2.先聲明一下,我看了lt318025大神給出的答案,他的思維非常活躍,已經分了2種情況。
現在有2個一維數組,$a和$b,即刪除$a中存在於$b的元素,刪除$b中$a存在的元素,組後合並返回。
可是lt318025大神用的PHP版本太高,給出的demo在低版本PHP下運行失敗,這里修正一下:
<?php
$a=array(1,2,3);
$b=array(2,3,4);
//得到存在於$a但不存在於$b中的元素組成的數組
$c=array_diff($a,$b);
//這里簡單求出在$a但不在$b中的元素
var_mp($c);
//得到存在於$a但不存在於$b中的元素組成的數組與存在於$b但不存在於$a中的元素組成的數組的並集
$d=array_merge(array_diff($a,$b),array_diff($b,$a));
//這里徹底剔除了同時存在於$a和$b中的元素
var_mp($d);
究竟是哪一種情況,這需要看提問者的需求了。
6. php中一維或多維數組去除重復項
方案一
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
$arr1 = array_flip($arr);
$arr2 = array_flip($arr1);
print_r($arr2);
方案二
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
$a = array_count_values($arr);
$b = array_keys($a);
print_r($b);
方案三
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
foreach($arr as $k=>$v){
$arr1[$v] = $k;
$arr2 = array_flip($arr1);
}
print_r($arr2);
方案四
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
$arr1 = array_unique($arr);
print_r($arr1);
都是剛剛我實驗出來的 都可以封裝起來用遞歸實現多維去掉重復項
7. php中如何刪除二維數組中含有指定元素的所有一維數組要求如下:
foreach( $arr as $key => $value ) {
if(in_array('w',$value)) unset($arr[$key]);
}
8. PHP數組問題,怎麼把array去掉,變成一維數組
舉個例子吧,以下面的代碼為例,將其變成一維數組。
$msg = array(
array(
'id'=>'45',
'name'=>'jack'
),
array(
'id'=>'34',
'name'=>'mary'
),
array(
'id'=>'78',
'name'=>'lili'
),
);
第一種方法:
復制代碼 代碼如下:
foreach($msg as $k => $v){
$ids[] = $id;
$names[] = $name;
}
第二種方法:
復制代碼 代碼如下:
$ids = array_column($msg, 'id');
$names = array_column($msg, 'name');
以上兩種解法print_r($names);後的結果為:
復制代碼 代碼如下:
Array(
[0]=>jack
[1]=>mary
[2]=>lili
)
注意:array_column();可以有第三個參數,如 $n = array_column($msg, 'name', 'id');
print_r($n);的結果為:
復制代碼 代碼如下:
Array(
[45]=>jack
[34]=>mary
[78]=>lili
)
9. php刪除數組中的一個元素,其他元素的順序會改變嗎
順序的話,少了一個肯定向前啊。
如果是鍵值,那麼鍵值也不會改變。
(好像你在排隊一下,少一個人肯定後面的向前走,不會出現什麼順序打亂之類的。)
如果你用的特定函數,比如array_shift() 函數的話(並且鍵值是自己設定的話,就不會改變鍵名;如果自動生成,會幫你重新排列鍵名,順序不管怎麼樣都不會打亂,最多就是鍵名打斷;除非這個函數說了,會隨即打亂排序,那就會打亂咯。)
-----------
不採納?我繼續補充~
例如:
鍵值:1 2 3 4 5
對應:A B C D E
如果我用unset 刪除了鍵值為4的D,那麼,數組的排序就是:
鍵值:1 2 3 5
對應:A B C E
也就是少了一個數
如果這回我用的array_shift()函數刪除鍵值為4的D,結果就是:
鍵值:0 1 2 3
對應:A B C E
它自動從0開始把鍵值重新排序。
如果不出意外的情況下,鍵值是直接對應具體的值的。也就說,鍵值位置的改變,值也會設置而變。
求採納T_T