- 1 <?php
- 2 // 向php数组函数array_colum()传入奇怪的数组
- 3 // array_colum()函数 返回行列数组的其中一列,可以用其他列的键充当键
- 4 $arr = [
- 5 [ 1, 2, 3, 4, 5 ],
- 6 [ 1, 2, 3, 4, 5 ],
- 7 [ 1, 2, 3, 4, 5 ]
- 8 ];
- 9 print_r( array_column( $arr, 1, 2 ) );
- 10 // Array
- 11 // (
- 12 // [3] => 2
- 13 // )
- 14 // 本例,用第三列作返回第二列的键,第三列的值都是4,array_colum()返回的数组键名重复,
- 15 // 于是值被覆盖,最后只剩下一个元素
- 16 print_r( array_column( $arr, 1 ) );
- 17 // Array
- 18 // (
- 19 // [0] => 2
- 20 // [1] => 2
- 21 // [2] => 2
- 22 // )
- 23 // array_colum( $arr, 1 ) 这样使用就可以获得第二列的值。
- 24
- 25 $arr = [
- 26 [1, 2, 3, 4],
- 27 [5, 6, 7],
- 28 [8, 9, 10, 11]
- 29 ];
- 30 print_r( array_column( $arr, 1, 3 ) );
- 31 // Array
- 32 // (
- 33 // [4] => 2
- 34 // [5] => 6
- 35 // [11] => 9
- 36 // )
- 37 // 本例中,目标数组的第四列缺少一项,于是返回的数组第二个元素的键被系统php自动设置成了5
- 38 $arr = [
- 39 [1, 2, 3, 4],
- 40 [5, 6, 7],
- 41 [8, 9, 10, 11]
- 42 ];
- 43 print_r( array_column( $arr, 3, 1 ) );
- 44 // Array
- 45 // (
- 46 // [2] => 4
- 47 // [9] => 11
- 48 // )
- 49 // 在本例中,目标数组的第四列少一个值,返回的数组并不含这一项。
- 50 $arr = [
- 51 ['a', 'b', 'c', 'd'],
- 52 ['e', 'f', 'g' ],
- 53 ['i', 'j', 'k', 'l']
- 54 ];
- 55 print_r( array_column( $arr, 1, 3 ) );
- 56 // Array
- 57 // (
- 58 // [d] => b
- 59 // [0] => f
- 60 // [l] => j
- 61 // )
- 62 // 当第四列其中一个没有值时,系统会自动补上索引键名
- 63 $arr = [
- 64 ['a', 'b', 'c', 'd'],
- 65 ['e', 'f', 'g' ],
- 66 ['i', 'j', 'k', 'l']
- 67 ];
- 68 print_r( array_column( $arr, 3, 1 ) );
- 69 // 和上面一样,当某一列没有值,而又被指定为返回数组的值,这时,返回数组不含这个值
- 70 $arr = [
- 71 ['a' => 'a', 'b' => 'b', 'c' => 'c'],
- 72 ['d' => 'd', 'e' => 'e', 'f' => 'f'],
- 73 ['g' => 'g', 'h' => 'h', 'i' => 'i']
- 74 ];
- 75 print_r( array_column( $arr, 'b', 'c' ) );
- 76 // Array
- 77 // (
- 78 // [c] => b
- 79 // )
- 80 // 因为指定的这两列都只有一个满足条件,于是返回数组只有一个元素