温故知新,PHP函数篇

    技术2022-05-11  55

    PHP 函数

    在使用之前,先用函数检测一下,是否已经加载了相应的模块:if (extension_loaded('calendar')) {    //do}或者:if (function_exists('')) {    //do}

    数组函数Array

    数组可以用+号来追加。<?php$array1 = array();$array2 = array(1 => "data");$result = $array1 + $array2;?>

    array_change_key_case() 更改数组的键名,本函数不改变数字索引如果一个数组中的多个键名经过本函数后变成一样的话(例如 "keY" 和 "kEY"),最后一个值将覆盖其它的值。

    array_filter()过滤数组中的单元function odd($var){    return($var % 2 == 1);}$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);print_r(array_filter($array1, "odd"));array_filter() 依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

    如果没有提供 callback 函数,array_filter() 将删除 input 中所有等值为 FALSE 的条目。这个功能可用于清除数组中的一些为FALSE的值

    array_keys()可以用来求出指定值在数组中出现的位置/键名$array = array("blue", "red", "green", "blue", "blue");print_r(array_keys($array, "blue"));

    array_map本函数一个有趣的用法是构造一个数组的数组,这可以很容易的通过用 NULL 作为回调函数名来实现。 <?php$a = array(1, 2, 3, 4, 5);$b = array("one", "two", "three", "four", "five");$c = array("uno", "dos", "tres", "cuatro", "cinco");

    $d = array_map(null, $a, $b, $c);print_r($d);?> 输出结果如下:Array(    [0] => Array        (            [0] => 1            [1] => one            [2] => uno        )...

    array_multisort对多个数组或多维数组进行排序关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列并以行来排序――这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。

    本例中 data 数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。 <?php$data[] = array('volume' => 67, 'edition' => 2);$data[] = array('volume' => 86, 'edition' => 1);$data[] = array('volume' => 85, 'edition' => 6);$data[] = array('volume' => 98, 'edition' => 2);$data[] = array('volume' => 86, 'edition' => 6);$data[] = array('volume' => 67, 'edition' => 7);

    本例中将把 volume 降序排列,把 edition 升序排列。

    现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。

    <?php// 取得列的列表foreach ($data as $key => $row) {    $volume[$key]  = $row['volume'];    $edition[$key] = $row['edition'];}

    // 将数据根据 volume 降序排列,根据 edition 升序排列// 把 $data 作为最后一个参数,以通用键排序array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);?> 如果要将改变后的结果返回到原有的数组中,只需将原来的数组变量增加到参数尾部如:

    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

    本函数相当有用,为有助于理解,请再看下面这个名次排列例子: <?php$grade = array("score" => array(70, 95, 70.0, 60, "70"),               "name" => array("Zhang San", "Li Si", "Wang Wu",                               "Zhao Liu", "Liu Qi"));array_multisort($grade["score"], SORT_NUMERIC, SORT_DESC,                // 将分数作为数值,由高到低排序                $grade["name"], SORT_STRING, SORT_ASC);                // 将名字作为字符串,由小到大排序var_dump($grade);?>

    usort使用用户自定义的比较函数对数组中的值进行排序本函数将用用户自定义的比较函数对一个数组中的值进行排序。如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。 如果要对某个多维数组按指定键名排序,可以用这个函数,例如:<?phpfunction cmp($a, $b){    return strcmp($a["fruit"], $b["fruit"]);}

    $fruits[0]["fruit"] = "lemons";$fruits[1]["fruit"] = "apples";$fruits[2]["fruit"] = "grapes";

    usort($fruits, "cmp");

    while (list($key, $value) = each($fruits)) {    echo "/$fruits[$key]: " . $value["fruit"] . "/n";}?>

    自然排序natsort()用于模仿人的习惯排序,例如文件名的img1.jpg,img10.jpg,img12.jpg,img2.jpg,将会按这样的顺序来排:img1.jpg,img2.jpg,img10.jpg,img12.jpg,而不是用sort()所得到的这样的结果:img1.jpg,img10.jpg,img12.jpg,img2.jpg


    最新回复(0)