设为首页 收藏本站
查看: 539|回复: 0

[经验分享] PHP之数组

[复制链接]

尚未签到

发表于 2017-3-21 06:36:12 | 显示全部楼层 |阅读模式
作者:zccst

5,array_merge与“+”的区别
array("a")+array("b")的结果是___
A.array("a","b")
B.array("b","a")
C.array("b")
D.array("a")
答案:D
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)
对于“+”

$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);

array(5) {
  [0]=>
  string(6) "zero_a"
  [2]=>
  string(5) "two_a"
  [3]=>
  string(7) "three_a"
  [1]=>
  string(5) "one_b"
  [4]=>
  string(6) "four_b"
}
区别:
merge是以后者为准(覆盖前者相同key的值),而“+”是以前者为准。

4,
array_keys($arr[,search_value, strict])  返回字符串键名(数字或字符串),组成新数组
一般用法:例子见手册
高级用法:
search_value  可选。指定值的索引(键)。
strict  可选。与 value 参数一起使用。可能的值:
    true - 根据类型返回带有指定值的键名。
    false - 默认值。不依赖类型。

3,array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )
根据 offset 和 length 参数所指定的 array 数组中的一段序列。
注意 array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"
// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));

输出结果:
Array
(
    [0] => c
    [1] => d
)
Array
(
    [2] => c
    [3] => d
)
2,判断是否为数组

bool is_array($arr)//如果 var 是 array,则返回 TRUE,否则返回 FALSE。类似的有is_float()、is_int()、is_integer()、is_string() 和 is_object()
//或
(array)$arr

1,array_fill()填充数组
<?php
$a = array_fill(5, 6, 'banana');
print_r($a);
?>
结果是:
Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)
再比如,为数组赋初值$ret = array_fill(0,7,0);
这样数组$ret就有7个值,且均为0。

基础:
1,初始化  
$arr = array();
2,增加
array_push()和array_unshift()
普通数组
array_push($fruitArray, "grape", "pineapple", "tomato");
关联数组
$fruitArray = array("a"=>"grape");
array_push($fruitArray, "c"=>"grape");
或$fruitArray['d'] = "tomato";
注:关联索引和pdo中的关联数组不一样。
区别是关联数组的key不能重复,但关联索引的key可重复(实际上必须重复)。
3,删除
array_shift()
array_pop()
unset($capitals['California']);  普通数组、关联数组,二维数组的unset使用。
例如:

//unset使用实例,注unset不改变原来的index值
$data = array();
$i = 0;
foreach ($totalArr as $total){
foreach ($fails as $fail){
if($fail['name'] == $total['name']){
$percent = sprintf( "%1\$.2f", $fail['num'] * 100 / $total['total'] );
array_push($data,array('name'=>$total['name'],'total'=>$total['total'],'num'=>$fail['num'],'percent'=>$percent.'%'));
unset($totalArr[$i]);
}
}
$i++;
}
/********************* 剩下的 **********************/
foreach ($totalArr as $t){
array_push($data,array('name'=>$t['name'],'total'=>$t['total'],'num'=>0,'percent'=>'0.00%'));
}
print json_encode($data);

4,去掉重复值
array_unique()
例如:$a = array("a"=>"cat", "b"=>"cat"); print_r(array_unique($a));
结果是Array([a]=>cat)
5,差异化比较
array_udiff
6,排序
sort
ksort 按键名排序
互转函数
1,explode
把字符串转换成数组
例,
<?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>
输出:

Array
(
[0] => Hello
[1] => world.
[2] => It's
[3] => a
[4] => beautiful
[5] => day.
)


2,implode
把数组转换成字符串
implode(separator, array) 函数把数组元素组合为一个字符串

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352659-1-1.html 上篇帖子: 详谈PHP数组 下篇帖子: php error_reporting
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表