首页 > 编程技术 > php

php 数组添加元素(可用关联数组)总结

发布时间:2016-11-25 17:05

如果我们是一维数组增加数组元素我们可以使用ArrayListay_push,当然除这种方法之外我们还有更直接的办法,下面我来给大家整理php数组添加元素的一些方法总结。


一,一维数组增加元素

$ArrayList = ArrayListay(); 
Array_push($ArrayList, el1, el2 ... eln); 

但其实有一种更直接方便的做法:

 代码如下 复制代码

$ArrayList = ArrayListay(); 
$ArrayList[] = el1; 
$ArrayList[] = el2; 
... 
$ArrayList[] = eln; 

两种方法得出的效果是一样的

添加一个或多个元素

 代码如下 复制代码

<?php
    $ArrayList1 = ArrayListay("a", "b");
    Array_push($ArrayList1, "c", "d");
    print_r($ArrayList1);
  ?>
  运行结果:
   ArrayListay
  (
   [0] => a
   [1] => b
   [2] => c
   [3] => d
  )

注:如果第一个参数不是数组,ArrayListay_push() 将发出一条警告

在数组开头插入元素

1.ArrayListay_unshift

使用方法

 代码如下 复制代码

<?php
$array_Qlist = ArrayListay("军民联防", "banana");
Array_unshift($array_Qlist, "西瓜", "吹牛B");
print_r($array_Qlist);
?>

输出

ArrayListay
(
    [0] => 西瓜
    [1] => 吹牛B
    [2] => 军民联防
    [3] => banana
)

数组添加关联元素使用使用ArrayListay_push或者ArrayListay_unshift是行不通了,那么我们要如何增加呢


使用ArrayListay_merge方法实现类似ArrayListay_unshift在开头添加元素的功能

 代码如下 复制代码

<?php
$array_Qlist = ArrayListay('a', 'B');
$array_Qlist = Array_merge(ArrayListay('front' => '你好小www.111cn.net'), $array_Qlist);
/*
ArrayListay
(
    [front] => 你好小www.111cn.net
    [0] => a
    [1] => b
)
*/
?>

2.+操作符

 代码如下 复制代码

<?php
$array_Qlist = Array('a', 'B');
$array_Qlist = Array('front' => '你好小www.111cn.net') + $array_Qlist;
?>

输出结果与使用ArrayListay_merge方法一样。

3.在元素结尾添加关联数组元素

 代码如下 复制代码

<?php
$array_Qlist = ArrayListay('a', 'B');
$array_Qlist['front'] = '你好小www.111cn.net';
/*
输出
ArrayListay
(
    [0] => a
    [1] => b
    [front] => 你好小www.111cn.net 
)
*/
?>

至于有些朋友说Array_push增加元素与直接$a[]='a'这种性能要差点之外其它的都是一样,如果只要一个值就没可比性了哦。

在php中trim函数是删除字符串中空格的并不是html代码的nbsp空格了,那么我们可不可以使用期trim来删除呢,其实稻简单下面我们来看看吧。

此处所指的nbsp是实体,而不是nbsp四个字符

 代码如下 复制代码
$str = "&nbsp;abc";
$converted = strtr($str, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
var_dump($converted); // 这儿才是要处理的字符串,上面的都是准备工作

在处理此问题的时候,经历了一番波折,先是var_dump出来,但是和正常的字符串无异。
后来又使用escape尝试输出,发现是xa0,于是就想trim($converted, "xa0"),无果。

最后在php手册的trim函数下的第一个评论发现了解决方案。

 代码如下 复制代码

var_dump(trim($converted, chr(0xc2) . chr(0xa0)));

其实要删除字符串中的&nbsp;我们压根不需要这么复杂了,只要使用str_replace()就可搞定了。

 代码如下 复制代码

$a ="&nbsp; www.111cn.net";
echo str_replace('&nbsp;','',$a);

结果为

www.111cn.net

array_merge()函数在php中是对数据进行合并的,可以把多个数组合成一个数组,并且不改变原数组的值了,但今天我在使用array_merge合并数组时碰到几个小细节上的问题,下面我举例子给各位朋友看看。

1.array_merge()合并

例子

 代码如下 复制代码

$array = array('a'=>'bb');
$array2 = array('b'=>'cc');
$array3 = array_merge($array,$array2);

输出结果为

Array ( [a] => bb [b] => cc )

上面因为都是数组就没有问题了,假如我们把$array 设置不是数组看看什么情况

 代码如下 复制代码


$array = 1;//array('a'=>'bb');
$array2 = array('b'=>'cc');
$array3 = array_merge($array,$array2);
print_r( $array3 );

运行后结果

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in E:test1.php on line 4

告诉我们必须是要一个数组了,那么这个我就有多种方法来解决,

1.使用is_array() 进行判断了,但是会发现如果合并数组比较多一个个判断不合理,后来发现可以转换数据类型

 代码如下 复制代码

$array = 1;//array('a'=>'bb');
$array2 = array('b'=>'cc');
$array3 =  array_merge((array)$array,(array)$array2);
print_r( $array3 );

输出结果不报错了

Array ( [0] => 1 [b] => cc )

他自动把数字1转换成了数组了,所以大家在使用时一定要注意这些细节哦。

下面给大家总结了两种实现金字塔打印的方法,一种是利用了自定义函数,另一种是利用了for循环了,其实两都用到了只是前者高级一些吧。

自定义函数实现金字塔

 代码如下 复制代码
<?php
/**
 * 金字塔
 * string fun_py(int $rows = 9, bool $sort=true)
 * $rows 表示行数 必须为整数 并且必须在1-20之间
 * $sort 表示排序 true表示正序 FALSE表示倒序
 */
function fun_py($rows = 9, $sort=true){
 if ($rows<1 || $rows>20){
  return "必须在1-20之间";
 }
 if($rows!=(int)($rows)){
  return '行数 必须为整数';
 }
 $str="";
 if($sort){
  for($i=1;$i<=$rows;$i++){
   $str.= '<br/>';
   for($j=1;$j<=$i;$j++){
    if($j==1){
     for($k=1;$k<=($rows-$i);$k++){
      $str.= '&nbsp';
     }
    }
    $str.= '*'.'&nbsp';
   }
  }
 } else{
  for($i=$rows;$i>=1;$i--){
   $str.= '<br/>';
   for($j=1;$j<=$i;$j++){
    if($j==1){
     for($k=1;$k<=($rows-$i);$k++){
      $str.= '&nbsp';
     }
    }
    $str.= '*'.'&nbsp';
   }
  }
 }
 return $str;
}
echo fun_py(9,false);
?>


下面再实现个金字塔形状物,通用也是用到for循环

 代码如下 复制代码

<?php
/**
金字塔正序
**/
for($a=1;$a<=10;$a++){
 for ($b=10;$b>=$a;$b--){
    echo "&nbsp";
  }
 for ($c=1;$c<=$b;$c++){
   echo "*"."&nbsp";
 }
 echo "<br />";
}
?>

同样想让这个金字塔倒立起来呢

 代码如下 复制代码

<?php
/**
金字塔玩倒立
**/
for($a=10;$a>=1;$a--){
 for ($b=10;$b>=$a;$b--){
    echo "&nbsp";
  }
 for ($c=1;$c<=$b;$c++){
   echo "*"."&nbsp";
 }
 echo "<br />";
}
?>

在以交们都是讲述如何来删除数组中重复元素了,今天我看到一文章是写要我们如何获取数组中重复元素最多的那个,下面一起来看具体例子。
 代码如下 复制代码

<?php
/**
 *
 * @author http://www.111cn.net
 * Created on 2014-4-1
 * @param   array $array
 * @param   int [optional] $length
 * @return  array
 */
function mostRepeatedValues($array,$length=0){
    if(empty($array) or !is_array($array)){
        return false;
    }
    //1. 计算数组的重复值
    $array = array_count_values($array);
    //2. 根据重复值 倒排序
    arsort($array);
    if($length>0){
        //3. 返回前 $length 重复值
        $array = array_slice($array, 0, $length, true);
    }
    return $array;
 
}
$array = array(1, 1, 1, 54, 3,4, 3,4, 3, 14, 3,4, 3,7,8,9,12,45,66,5,7,8,9,2,45);
$counts=mostRepeatedValues($array,5);
print_r($counts);
/*
Array
(
    [3] => 5
    [4] => 3
    [1] => 3
    [9] => 2
    [45] => 2
)
*/
?>
标签:[!--infotagslink--]

您可能感兴趣的文章: