PHP教程

php数组

本文主要是介绍php数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

day 1

<?php
/**
 * @author fanyinggang
 * 数组测试
 */
Bd_Init::init('activity');

$activity = 'labor21';
$activityConfig = Activity_Config_Activitycommon::getActivityConfigMC($activity);
$tasklist = $activityConfig['tasks'];

/**
 * array_change_key_case
 * 将数组中的所有键名修改为全大写或小写 !!!不改变数字索引
 如果一个数组中的多个键名经过本函数后变成一样的话(例如 "seY" 和 "SEY"),最后一个值将覆盖其它的值。
 * @param $array 数组
 * @param CASE_UPPER 大写参数(默认小写)
 * @return array
 */
$keyCase = function () {
    $array = array("FirSt" => 1, "SecOnd" => 4 ,"second" => 5); //不是数组返回false
    return array_change_key_case($array, CASE_UPPER);
};
/**
 * array_chunk
 * 将一个数组分割成多个数组,(其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个)
   如果 size 小于 1,会抛出一个 E_WARNING 错误并返回 null。
 * @param $array 数组
 * @param $size 分割的每个数组大小
 * @param $preserve_keys 设为 true,可以使 PHP 保留输入数组中原来的键名。如果你指定了 false,那每个结果数组将用从零开始的新数字索引。默认值是 false。
 * @return array
 */
$chunk = function () { 
    $array = [1,2,3,4,5,6,7,8];
    return array_chunk($array, 2, true);
};
/**
 * array_column
 * 返回数组中指定的一列
 * @param $input 数组
 * @param $column_key 需要返回的列值 可以为null(返回整个数组)
 * @param $index_key    指定的索引列
 * @return array
 */
$column = function () use ($tasklist) {
    return array_column($tasklist, null, 'id');
};
/**
 * 创建一个数组  第一个数组的值作键 第二个数组的值作值
 * array_combine
 俩个数组个数不同会抛出警告
 * @param $keys 作为键的数组
 * @param $value 作为值的数组
 * @return array
 */
$combine = function () use ($tasklist){
    return array_combine(array_column($tasklist, 'id'),$tasklist);
};
/**
 * 统计数组中所有的值 
 * array_count_values
 * @param $input
 * @return array (用 array 数组中的值作为键名,该值在数组中出现的次数作为值。)
 */
$countValues = function () { 
    $array = array(1, "hello", 1, "world", "hello");
    return array_count_values($array);
};
/**
 * 带索引检查计算数组差集  索引和值
 * array_diff_assoc
 * @param $array1 数组
 * @param $array2 比较的数组 ... 还可以有更多数组
 * @return array
 */
$diffAssoc = function () { 
    $array1 = array("c" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "yellow", "red");
    return array_diff_assoc($array1, $array2);
};
/**
 * 计算数组差集  值
 * array_diff
 * @param $array1
 * @param $array2
 * @return array
 */
$diff = function () { 
    $array1 = array("a" => "green", "blue", "red", "red");
    $array2 = array("b" => "green", "yellow", "red");
    return array_diff($array1, $array2); 
};
/**
 * 使用键名比较计算数组的差集  索引
 * array_diff_key
 * @param $array1
 * @param $array2 ...
 * @return array
 */
$diffKey = function () { 
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
    return array_diff_key($array1, $array2);
};
/**
 * 使用指定的键和值填充数组
 * array_fill_keys
 * @param $keys
 * @param $value
 * @return array
 */
$fill = function () { 
    $keys = array(1,2,3,4,5,6,7,8,9);
    return array_fill_keys($keys, 'banana');
};
/**
 * 使用指定的值填充数组
 * array_fill
 */
$keyCase = call_user_func($keyCase);
$chunk   = call_user_func($chunk);
$column  = call_user_func($column);
$combine = call_user_func($combine);
$countValues = call_user_func($countValues);
$diffAssoc = call_user_func($diffAssoc);
$diff      = call_user_func($diff);
$diffKey   = call_user_func($diffKey);
$fill      = call_user_func($fill);
var_dump($fill);

day 2

<?php
/**
 * array_filter 使用回调函数过滤数组的元素
 * 
 * @param 数组 $array
 * @param 回调函数 $callback
 * @param 附加参数 $mode  
 * ARRAY_FILTER_USE_KEY - 将键名作为 callback 回调的唯一参数.
 * ARRAY_FILTER_USE_BOTH - 将值和键都作为参数传递给 callback 回调,而不是仅传递值
 * 默认值为 0 ,只传递值作为 callback 回调的唯一参数。
 * @return array
 */
$filter = function () {
    $array = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
    return array_filter($array, function($v){
        return $v & 1; 
    });
};
/**
 * array_flip 交换数组中键和值
 * @param array $array
 * @return array
 */
$flip = function () {
    $array = [1,2,3,4,5,6,7,8,9];
    return array_flip($array);
};
/**
 * array_intersect_assoc 检查数组交集 (键和值)
 * @param 第一个数组(要求交集的数组) $array
 * @param 第二个数组(要对比的数组) $array2 ...
 * @return array
 */
$intersectAssoc = function () {
    $array = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "b" => "yellow", "blue", "red");
    return array_intersect_assoc($array, $array2);
};
/**
 * array_intersect_key 检查数组交集 (键)  
 * @param 第一个数组(要求交集的数组) $array
 * @param 第二个数组(要对比的数组) $array2 ...
 * @return array
 */
$intersectKey = function () {
    $array = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "b" => "yellow", "blue", "red");
    return array_intersect_key($array, $array2);
};
/**
 * array_intersect 检查数组交集 (值)
 * @param 第一个数组(要求交集的数组) $array
 * @param 第二个数组(要对比的数组) $array2 ...
 * @return array
 */
$intersect = function () {
    $array = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "b" => "yellow", "blue", "red");
    return array_intersect($array, $array2);
};
/**
 * array_key_exists 检查指定的键名或者索引是否在数组中
 * @param 指定的键名或索引 $key
 * @param 数组 $array
 * @return bool
 */
$keyExists = function () {
    $search_array = array('first' => 1, 'second' => 4);
    if (array_key_exists('first',$search_array)) {
        return '存在';
    } else { 
        return "不在";
    } 
};
/**
 * array_key_first 获取数组第一个键  version >=7.3
 * @param 数组 $array
 * @param 键 $key
 * @return 第一个键值
 返回 array 的第一个键值(如果不为空),否则返回 null。
 */
$keyFirst = function () { 
    $array = ['a' => 1, 'b' => 2, 'c' => 3];
    // return array_key_first($array);
    // ===
    reset($array);
    return key($array);
};
/**
 * array_key_last 获取数组最后一个键 version >= 7.3
 * @param 数组 $array
 * @param 键 $key
 * @return 最后一个键值
 返回 array 的最后一个键值(如果不为空),否则返回 null。
 */
$keyLast = function () { 
    $array = ['a' => 1, 'b' => 2, 'c' => 3];
    // return array_key_last($array);
    // ===
    end($array);
    return key($array);
};
/**
 * array_keys  返回数组中部分或全部键名
 * @param 要返回的键 $input
 * @param 如果指定了这个参数,只有包含这些值的键才会返回。 $search_value
 * @param 判断在搜索的时候是否该使用严格的比较(===) $strict
 * @return array
 */
$keys = function () {
    $array = array(0 => 100, "color" => "red");
    return array_keys($array, 'red', true);
};
/**
 * array_map 数组每个函数回调函数
 * @param 回调函数 $callback
 * @param array $要运行callback的数组
 * @param arrays $额外的数组
 * @return array
 */
$map = function () { 
    $a = [1, 2, 3, 4, 5];
    $b = ['uno', 'dos', 'tres', 'cuatro', 'cinco'];
    return array_map(function($k, $v){
        return array(
            $k => $v,
        );
    },$a, $b);
};
$map = call_user_func($map);
$keys = call_user_func($keys);
$keyLast = call_user_func($keyLast);
$keyFirst = call_user_func($keyFirst);
$keyExists = call_user_func($keyExists);
$interscet = call_user_func($intersect);
$intersectKey = call_user_func($intersectKey);
$intersectAssoc = call_user_func($intersectAssoc);
$filter = call_user_func($filter);
$flip = call_user_func($flip);
var_dump($map);die;

day 3

这篇关于php数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!