>  기사  >  php教程  >  php5.5新数组函数array_column

php5.5新数组函数array_column

WBOY
WBOY원래의
2016-06-21 08:49:35795검색

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

)

*/



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.