每日五个 PHP 函数(2)

上面文章《每日五个 PHP 函数》已爆炸,更新不了了,哈哈

大佬们可以留言函数练习的题目呀,每天找个小练习好吃亏,哈哈

2019/03/10

至此已经回顾完啦

2019/03/08

2019/03/07

2019/03/06

2019/03/05

2019/03/04

2019/03/02

2019/03/01

2019/02/28

2019/02/27

2019/02/26

2019/02/25

抓紧复习

2019/02/24

2019/02/23

  • 今日小练习

利用 currentnext 完成数组的遍历

$fruits = ['apple', 'strawberry', 'pear', 'orange'];

while ($curFruit = current($fruits)) {
    echo "current fruit is " . $curFruit . "\n"; 

    next($fruits);
}

// 输出:
current fruit is apple
current fruit is strawberry
current fruit is pear
current fruit is orange

/*
说明:每个数组中都会有一个内部的指针指向它的”当前“元素,初始指向数组中第一个元素。

1. current()返回数组中当前元素(指针指向的元素)的值,该函数不会移动指针

以下函数均有移动指针的作用:

2. reset()将内部指针指向数组中的第一个元素,如果成功,返回数组第一个元素的值,否则返回 false
3. end()将内部指针指向数组中最后一个元素,并返回元素的值
4. next()将内部指针指向数组中下一个元素,如果成功,返回元素的值,否则返回 false
5. prev()将内部指针指向数组中上一个元素,如果成功,返回元素的值,否则返回 false
6. each()返回当前元素的键和值,并向前移动指针 
*/

2019/02/22

  • 今日小练习

在寻找中发现了这篇文章,还挺有意思的,大伙可以看看,《 巧妙利用php数组函数,解决二维数组查找问题 》

2019/02/21

  • 今日小练习
// 说明:array_merge 与 + 的区别

$arrOne = array("a", "b", "c");
$arrTwo = array("b", "d", "e");

$arrAdd = $arrOne + $arrTwo;
$arrMerge = array_merge($arrOne, $arrTwo);

print_r($arrAdd);
print_r($arrMerge);

// 依次输出:
Array
(
    [0] => a
    [1] => b
    [2] => c
)

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => b
    [4] => d
    [5] => e
)

$arrThree = array("a" => "a", "b" => "b", "c" => "c");
$arrFour = array( "b" => "b2", "d" =>  "d", "e" => "e");

$arrAdd = $arrThree + $arrFour;
$arrMerge = array_merge($arrThree, $arrFour);

print_r($arrAdd);
print_r($arrMerge);

// 依次输出:
Array
(
    [a] => a
    [b] => b
    [c] => c
    [d] => d
    [e] => e
)
Array
(
    [a] => a
    [b] => b2
    [c] => c
    [d] => d
    [e] => e
)

$arrFive = array(1 => "a", 2 => "b", 4 => "c");
$arrSix = array( 3 => "b", 5 =>  "d", 4 => "e");

$arrAdd = $arrFive + $arrSix;
$arrMerge = array_merge($arrFive, $arrSix);

print_r($arrAdd);
print_r($arrMerge);

// 依次输出:
Array
(
    [1] => a
    [2] => b
    [4] => c
    [3] => b
    [5] => d
)
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => b
    [4] => d
    [5] => e
)

从上面的例子中可以看到 array_mergekey 为数字的时候完全免疫,直接累加了,且对所有 key 重置了, 而 + 对数字和字符串都不免疫,key 值相同的前面的覆盖后面的。array_merge 对相同的 key (非数字),后面的覆盖前面的。

2019/02/20

  • 今日小练习
// 说明:取出 users 中所有 user 的 id (users 可能是一个包含用户信息的数组,也可能是一个 id 数组)

$users = array(2, 3);
// Or
$users = array(array('id' => 2, 'name' => 'Lhao', 'age' => 24), array('id' => 3, 'name' => 'Wjh', 'age' => 24));

if (is_array($first = \reset($users)) && \array_key_exists('id', $first)) {
    $users = \array_column($users, 'id');
}
print_r($users);

// 输出:
Array
(
    [0] => 2
    [1] => 3
)
php
本作品采用《CC 协议》,转载必须注明作者和本文链接
finecho # Lhao
本帖由 阿江 于 4年前 加精
讨论数量: 7

那篇文章多少字,数据库text都装不下了吧,这是站长没想到的 :joy:

5年前 评论
finecho

@lovecn 哈哈 :smiley:

5年前 评论

看到 array_merge() 总是先会想到 array_push() ,不知为何,那就索性写一下吧

$arr    = ["one", "two"];
$newArr = ["three", "four"];
array_push($arr, "two");
array_push($arr, $newArr);
print_r($arr);

输出如下结果:
Array
(
    [0] => one
    [1] => two
    [2] => two
    [3] => Array
        (
            [0] => three
            [1] => four
        )
)

注意:array_push() 不能新赋值一个变量的。如果赋值一个新的变量其结果是数组中的单元数目数量
$count = array_push($arr, $newArr);
print_r($count)
结果如下:
4
5年前 评论
finecho

@Ali 谢谢大佬补充 :blush:

5年前 评论

@Lhao 不客气。 :+1:

5年前 评论
MangoDa

每日5个PHP函数不更新了么

5年前 评论
if (is_array($first = \reset($users)) && \array_key_exists('id', $first)) {
    $users = \array_column($users, 'id');
}

请问这段代码的函数前面加反斜杠 \ 有什么作用吗

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!