Heim  >  Artikel  >  php教程  >  php5.5新数组函数array_column

php5.5新数组函数array_column

WBOY
WBOYOriginal
2016-06-21 08:49:35801Durchsuche

PHP5.5发布了,其中增加了一个新的数组函数array_column,感觉不错的!但是低版本PHP要使用,得自己实现:
参考地址:https://wiki.php.net/rfc/array_column

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

if(!function_exists('array_column')){

    function array_column($input, $columnKey, $indexKey=null){

        $columnKeyIsNumber      = (is_numeric($columnKey)) ? true : false;

        $indexKeyIsNull         = (is_null($indexKey)) ? true : false;

        $indexKeyIsNumber       = (is_numeric($indexKey)) ? true : false;

        $result                 = array();

        foreach((array)$input as $key=>$row){

            if($columnKeyIsNumber){

                $tmp            = array_slice($row, $columnKey, 1);

                $tmp            = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null;

            }else{

                $tmp            = isset($row[$columnKey]) ? $row[$columnKey] : null;

            }

            if(!$indexKeyIsNull){

                if($indexKeyIsNumber){

                    $key        = array_slice($row, $indexKey, 1);

                    $key        = (is_array($key) && !empty($key)) ? current($key) : null;

                    $key        = is_null($key) ? 0 : $key;

                }else{

                    $key        = isset($row[$indexKey]) ? $row[$indexKey] : 0;

                }

            }

            $result[$key]       = $tmp;

        }

        return $result;

    }

}

 

// 使用例子

$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'

    )

);

$firstNames = array_column($records, 'first_name');

print_r($firstNames);

/*

Array

(

    [0] => John

    [1] => Sally

    [2] => Jane

    [3] => Peter

)

*/

 

$records = array(

    array(1, 'John', 'Doe'),

    array(2, 'Sally', 'Smith'),

    array(3, 'Jane', 'Jones')

);

$lastNames = array_column($records, 2);

print_r($lastNames);

/*

Array

(

    [0] => Doe

    [1] => Smith

    [2] => Jones

)

*/

 

$mismatchedColumns = array(

    array(

        'a' => 'foo',

        'b' => 'bar',

        'e' => 'baz'

    ),

    array(

        'a' => 'qux',

        'c' => 'quux',

        'd' => 'corge'

    ),

    array(

        'a' => 'grault',

        'b' => 'garply',

        'e' => 'waldo'

    ),

);

$foo = array_column($mismatchedColumns, 'a', 'b');

print_r($foo);

/*

Array

(

    [bar] => foo

    [0] => qux

    [garply] => grault

)

*/



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn