php基础__2019-07-03

php数组原型

php数组其实是一种有序映射(或者说是有序字典)

<?php
/**
 * @author:Noah
 * noahlee0918@gmail.com
 * @param $arr
 * 使用each循环数组
 */
function eachArr($arr){
    reset($arr);
    while(list($key,$val) = each($arr)){
        echo $key . '=>' . $val.PHP_EOL;
    }
}


/**
 * @author:Noah
 * noahlee0918@gmail.com
 * @param $arr
 * @param $val
 * @return mixed
 * 使用数组指针取出当前值的下一个值,环形取
 */
function getNextValue($arr,$val){
    while($row = current($arr)){
        if($row == $val){
            if(next($arr) == false){
                return $val . '没有下一个值';
            }else{
                return $val . '下一个值是' .current($arr);
            }
        }
        next($arr);
    }
}

$listArr = [
    '1232','2456','7789','8976',
    '5678','3456','2347','9876',
    '3451','7744','2212','3214',
];
//eachArr($listArr);
$c_val = '3456';
$ret = getNextValue($listArr,'3456');
echo($ret);

##### 数组函数
//array_change_key_case将数组的所有键名修改为大写或者小写
$arr = array('aDc'=>1212,'aarrfggD'=>2323);
print_r(array_change_key_case($arr,CASE_UPPER));
print_r(array_change_key_case($arr,CASE_LOWER));

//array_chunk将一个数组分割成多个,第三个参数默认false,为true表示保留原来的键名
$arr_a = array('a','c','d','e','f','g','h');
print_r(array_chunk($arr_a,2,true));

//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' )
);
print_r(array_column($records,'first_name'));
print_r(array_column($records,null,'id'));
print_r(array_column($records,'first_name','id'));

//array_combine  创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
$arr_a_1 = array('zhang','li','wang');
$arr_a_2 = array('san','si','wu');
print_r(array_combine($arr_a_1,$arr_a_2));

//array_count_values  统计数组中所有的值
$arr_b = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($arr_b));

//array_diff_assoc 带索引检查计算数组的差集
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", 0=>"red");
$result = array_diff_assoc($array1, $array2);
print_r($result);

//array_diff_key 使用键名计算数组的差集
$result = array_diff_key($array1, $array2);
print_r($result);


//array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集
function diff_c($a,$b){
    if ($a === $b){
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}
$arr1 = array('a'=>12121,'b'=>2323,'red');
$arr2 = array('a'=>12121,2323,'red');
print_r(array_diff_uassoc($arr1,$arr2,"diff_c"));


//array_diff 计算数组的差集
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);

//array_fill_keys使用指定的键和值填充数组
$arr1 = array('aaa'=>124,'ccc'=>333,'ddd'=>222,'hhh'=>5656);
$arr2 = array('eee'=>2323,'fff'=>3434,'ggg'=>4545);
print_r(array_fill_keys($arr1,$arr2));

// array_fill 用给定的值填充数组 第一个参数是第一个索引,若是负数,那它后一个索引从0开始;第二个为数量,第三个为值
$arr = array_fill(0,5,'a');
print_r($arr);

//array_filter用回调函数过滤数组中的单元
$arr = [1,2,3,4,5,6,7,8,9];
function odd($n){
    return $n & 1; //& :按位"与"运算,只有奇数(odd)才可以返回1,否则返回0
}
function even($n){
    return !($n & 1);//数组中除了奇数,剩下的就是偶数了
}

$arr1 = array_filter($arr, 'odd');
$arr2 = array_filter($arr, 'even');

print_r($arr1);
print_r($arr2);

//array_flip交换数组中的键和值
$arr1 = array('ddd'=>1,'fff','ty'=>'eeee');
print_r(array_flip($arr1));

//array_intersect_assoc 带索引检查计算数组的交集
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "b" => "yellow", "blue", "red");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);

//array_intersect_key 使用键名比较计算数组的交集
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

print_r(array_intersect_key($array1, $array2));


//array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_intersect_uassoc($array1, $array2, "strcasecmp"));


//array_intersect_ukey 用回调函数比较键名来计算数组的交集
function key_compare_func($key1, $key2)
{
    if ($key1 == $key2)
        return 0;
    else if ($key1 > $key2)
        return 1;
    else
        return -1;
}

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

print_r(array_intersect_ukey($array1, $array2,'key_compare_func'));


//array_intersect计算两个数组的交际
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
print_r(array_intersect($array1,$array2));

//array_key_exists 检查数组里是否有指定的键名或索引
$array1 = array("a" => "green", "red", "blue",'hh'=>999);
var_dump(array_key_exists('a',$array1));

//array_key_first 获取数组的第一个键
$array = ['abc' => 1, 'bcd' => 2, 'cde' => 3];
print_r(array_key_first($array));


//array_keys返回数组中部分的或所有的键名
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array1 = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array1, "blue"));


//array_map  为数组的每个元素应用回调函数
function sumc($n){
    return ($n * $n * $n);
}
$arr = [1,2,3,4];
$a = array_map('sumc',$arr);
print_r($a);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容

  • PHP之数组 数组 PHP中的数组是一个有序映射(一种把values关联到keys的类型),或者称之为有序字典,O...
    痴人会说梦阅读 878评论 0 0
  • 在 PHP 中数组是使用最多的数据类型.大多数时间,我们不需要考虑 PHP 数组在编码中或者应用中的作用.我们喜欢...
    MrRight_li阅读 678评论 1 3
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,208评论 0 3
  • 今天遇到了个问题,大致是这样的。 为了解决在service好用一个发送微信消息的接口不影响我主体的功能,所以我是新...
    道法器自然阅读 192评论 0 0
  • 年至腊八第一节,八宝香粥美味多。最忆童年农家乐,珍惜幸福好生活。
    太阳哥月亮妹阅读 191评论 0 2