php数组函数相关内容
程序员文章站
2022-04-25 15:53:19
...
1、php删除两个数组中相同的元素;
(1)删除$arr1中存在,其他数组中也存在的元素;
$arr11 = array(1, 2, 3, 4);
$arr12 = array(2, 4);
$arr13 = array_diff($arr11,$arr12);
print_r($arr13); // Array ( [0] => 1 [2] => 3 );
$arr14 = array_diff($arr12,$arr11);
print_r($arr14); // Array ( )
(2)$a和$b,即删除$a中存在于$b的元素,删除$b中$a存在的元素,组后合并返回;
$arr1 = array(1,2,3);
$arr2 = array(2,3,4);
$arr3 = array_merge(array_diff($arr1,$arr2),array_diff($arr2,$arr1));
print_r($arr3); // Array ( [0] => 1 [1] => 4 );
$aaa = array(1,2,3,4);
$bbb = array(1,3,5,7);
$newarr = array();
// 两个数组的并集,所有元素组合成一个数组;
foreach($bbb as $keys => $values){
if(!in_array($values,$aaa,true)){
$aaa[] = $values;
}
}
print_r($aaa); // $bbb = array(1,3,5,7);
// 两个数组元素的交集,两个数组均有的元素组成一个新的数组;
foreach($bbb as $keys => $values){
if(in_array($values,$aaa,true)){
$newarr[] = $values;
}
}
print_r($newarr); // Array ( [0] => 1 [1] => 3 );
2、php如何将数组重复元素替换为空值?;
//如array('a','a','b','c','d','d','d'); 变成array('a',' ','b','c','d',' ',' ');
//方法1 、利用array_fill()和 + 函数以及ksort(按照健值进行排序);
$arr1 = array('a','a','b','c','d','d','d');
$count = count($arr1);
$arr2 = array_fill(0,$count,' ');
$temparr = array_unique($arr1); // Array ( [0] => a [2] => b [3] => c [4] => d )
$endarr = $temparr + $arr2;
ksort($endarr);
//print_r($endarr);
// 方法2; 利用for循环;
$arr4 = array();
for($i = 0;$i < $count; $i++){
if(array_key_exists($i,$temparr)){
continue;
}
$temparr[$i] = ' ';
}
ksort($temparr);
//print_r($temparr);
3、php数组中相同的元素合并;
$arr9 = array(1,2,2,4); // 转变成 array(1,array(2,2),4); 就是将原数组中,相同的元素组合成一个数组,当做子元素;
$arrres = array();
$temp = array_count_values($arr9);
foreach($temp as $keys => $values){
$arrres[] = $values > 1 ? array_fill(0,$values,$keys) : $keys;
}
print_r($arrres);
4、php中 随机生成5个数字,然后对数组进行低到高的排序;
$arr = array();
while(count($arr)<5){
$arr[] = rand(1,10);
$arr = array_unique($arr);
}
sort($arr);
print_r($arr);
5、如何使用php生成唯一ID的4种方法
// 方法1:
$numbers = range (1,50);
//shuffle 将数组顺序随即打乱
shuffle ($numbers);
//array_slice 取该数组中的某一段
$num=6;
$result = array_slice($numbers,0,$num);
print_r($result);
// 方法2:
$numbers = range (1,20);
//播下随机数发生器种子,可有可无,测试后对结果没有影响
srand ((float)microtime()*1000000);
shuffle ($numbers);
//跳过list第一个值(保存的是索引)
while (list(, $number) = each ($numbers)) {
echo "$number ";
}
// 方法3:
function NoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//调用现成的数组随机排列函数
return array_slice($rand_array,0,$limit);//截取前$limit个
}
print_r(NoRand());
// 方法4:
$tmp=array();
while(count($tmp)<5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print_r($tmp);
// 方法5:
$tmp = range(1,30);
print_r(array_rand($tmp,10));
6、提取字符串中相同的字符;
$aaa = '90pil8a94riqp'; // 提取其中相同的字符,计算并得到结果:9pi ?
$strres = '';
$arrayaaa = str_split($aaa);
$tempaaa = array_count_values($arrayaaa);
foreach($tempaaa as $keys => $values){
if($values > 1){
$strres .= $keys;
}
}
echo $strres;
$tid='1,2,2,4,4,5'; //重组字符串中相同的元素,即$tid变为'1,2,4,5'; 急急急!!!
$arraytid = explode(',',$tid);
$arraytid = array_unique($arraytid);
$restid = implode(',',$arraytid);
echo $restid;
7、编程实现具有相同功能的php数组函数;
// array_count_values(); 统计数组中的元素出现的次数;
// $aaa = array('a','c','w','d','b','m','a','c','w','a','c'); // Array ( [a] => 3 [c] => 3 [w] => 2 [d] => 1 [b] => 1 [m] => 1 );
// 函数1:
function arrcount1($aaa){
$bbb = array();
foreach($aaa as $keys => $values){
if(array_key_exists($values,$bbb)){
$bbb[$values] += 1;
}else{
$bbb[$values] = 1;
}
}
return $bbb;
}
// 函数2:
function arrcount2($aaa){
$ccc = array_unique($aaa);
$straaa = implode('',$ccc);
$arr = array();
for($i=0,$len=strlen($straaa);$i<$len;$i++){
$dange = substr($straaa,$i,1);
str_replace($dange,'aaaa',$aaa,$num);
$arr[$dange] = $num;
}
return $arr;
}
// 函数3:
function arrcount3($aaa){
$res = array();
$weiyi = array_unique($aaa);
foreach($weiyi as $keys => $values){
$res[$values] = 0;
}
foreach($aaa as $ks => $vs){
$res[$vs] += 1;
}
return $res;
}
// 函数4:
function arrcount4($aaa){
$resarr = array();
$arruin = array_unique($aaa);
foreach($arruin as $values){
$resarr[$values] = 0;
foreach($aaa as $vs){
if($values === $vs){
$resarr[$values]++;
}
}
}
return $resarr;
}
// 函数5:
function arrcount5($aaa){
$arr = array();
while(count($aaa)>0){
$b = array_shift($aaa);
$arr[$b] = 1;
foreach($aaa as $keys => $values){
if($b === $values){
$arr[$b]++;
unset($aaa[$keys]);
}
}
}
return $arr;
}
// array_reverse(); 数组反转函数; 第二个参数如果设置成ture,则保持健名不变;
$aaa = array('a' => '春','b' => '夏','c' => '秋','d' => '冬');
// 函数1:利用指针的移动;
function arr_reverse1($aaa){
$resarr = array();
end($aaa);
while(key($aaa) !== null){
$resarr[key($aaa)] = current($aaa);
prev($aaa);
}
return $resarr;
}
// 函数2:利用array_pop()弹出,赋值;
function arr_reverse2($aaa){
$newarr = array();
while(count($aaa)>0){
end($aaa);
$keys = key($aaa);
$v = array_pop($aaa);
$newarr[$keys] = $v;
}
return $newarr;
}
print_r(arr_reverse2($aaa));
// array_combine():创建一个数组,两个数组中,其中一个数组的元素作为健,另外一个数组的元素作为值;
// 注意:此时只对原数组中,健都是数自并从0依次开始的能用;
$aaa = array('春','夏','秋','冬');
$bbb = array('暖','热','凉','冷');
$newarr = array();
$aaalen = count($aaa);
for($i = 0;$i < $aaalen;$i++){
$newarr[$aaa[$i]] = $bbb[$i];
}
print_r($newarr);
// array_column(): 返回数组中,指定的列;
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);
$newarr = array();
foreach($records as $keys => $values){
$newarr[$values['id']] = $values['first_name'];
}
print_r($newarr);
// array_search(): 在数组中,查找指定的值,如果值在数组中,则返回 第一个 值对应的健,否则返回false;
$aaa = array(0 => 'php', 1 => 'mysql', 2 => 'java', 3 => 'html');
function arr_search($search,$aaa){
$find = false;
foreach($aaa as $keys => $values){
if($search === $values){
$find = $keys;
break; // 碰到第一个值,则直接结束,返回值;
}
}
return $find;
}
// 备注:
// in_array(): 判断、检查数组中是否存在某值; if(in_array(值,数组,(类型));
// array_keys(): 返回数组中 部分或者 所有的健名; (数组,(值对应的健),(类型));
// array_unique():数组去重;
$aaa = array('a','c','w','a','c','w','a','c','d','b','m');
function arr_unique($aaa){
$newarr = array();
foreach($aaa as $keys => $values){
if(in_array($values,$newarr)){
unset($aaa[$keys]);
}else{
$newarr[$keys] = $values; // 数组去重后,健名保持不变;
}
}
return $newarr;
}
// 二维数组去重;
$aaa = array(array('a','b'),array('a','c'),array('a','b'),array('b','c'));
function d2unique($aaa){
$newarr = array();
foreach($aaa as $keys => $values){
$strtem[] = implode('_',$values);
}
$temunique = array_unique($strtem);
foreach($temunique as $ks => $vs){
$newarr[$ks] = explode('_',$vs);
}
return $newarr;
}
// 其他方法实现数组去重;
// 1、arary_flip():只能翻转字符串或者整数;
$aaa = array('zhangsan','1.1',1,'lisi',2,'3.2','wangwu','zhangsan',5);
//print_r(array_unique($aaa)); // Array( [0] => zhangsan [1] => 1.1 [2] => 1 [3] => lisi [4] => 2 [5] => 3.2 [6] => wangwu [8] => 5 );
$tempaaa = array_flip($aaa);
print_r($tempaaa); // Array ( [zhangsan] => 7 [1.1] => 1 [1] => 2 [lisi] => 3 [2] => 4 [3.2] => 5 [wangwu] => 6 [5] => 8 );
print_r(array_flip($tempaaa)); // Array ( [7] => zhangsan [1] => 1.1 [2] => 1 [3] => lisi [4] => 2 [5] => 3.2 [6] => wangwu [8] => 5 )
// 注意: 此时翻转去重回来的数组健名,比较凌乱,可以对健名进行修复;
print_r(array_merge(array_flip($tempaaa))); //Array ( [0] => zhangsan [1] => 1.1 [2] => 1 [3] => lisi [4] => 2 [5] => 3.2 [6] => wangwu [7] => 5 );
// 方法2: 先翻转,再取出所有的健名;
print_r(array_keys($tempaaa)); // Array ( [0] => zhangsan [1] => 1.1 [2] => 1 [3] => lisi [4] => 2 [5] => 3.2 [6] => wangwu [7] => 5 );
上一篇: C++中的引用(代码实例)