首页 > 后端开发 > php教程 > 二维数组中的一个【键的值】作为一维的 【键】

二维数组中的一个【键的值】作为一维的 【键】

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-06 20:28:03
原创
1268 人浏览过

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>$array = array(

    0 => array(

            'univs_id' => 1001,

            'univs_name' => '清华大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    1 => array(

            'univs_id' => 1002,

            'univs_name' => '北京大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    2 => array(

            'univs_id' => 1003,

            'univs_name' => '中国人民大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

);</code>

登录后复制
登录后复制

这样类型的数组,如果不使用foreach进行遍历如何能达到下面的效果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>$array = array(

    1001 => array(

            'univs_id' => 1001,

            'univs_name' => '清华大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    1002 => array(

            'univs_id' => 1002,

            'univs_name' => '北京大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    1003 => array(

            'univs_id' => 1003,

            'univs_name' => '中国人民大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

);</code>

登录后复制
登录后复制

试了array_map 没有成功。

回复内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>$array = array(

    0 => array(

            'univs_id' => 1001,

            'univs_name' => '清华大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    1 => array(

            'univs_id' => 1002,

            'univs_name' => '北京大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    2 => array(

            'univs_id' => 1003,

            'univs_name' => '中国人民大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

);</code>

登录后复制
登录后复制

这样类型的数组,如果不使用foreach进行遍历如何能达到下面的效果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>$array = array(

    1001 => array(

            'univs_id' => 1001,

            'univs_name' => '清华大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    1002 => array(

            'univs_id' => 1002,

            'univs_name' => '北京大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

 

    1003 => array(

            'univs_id' => 1003,

            'univs_name' => '中国人民大学',

            'province_id' => 110000,

            'province' => '北京',

        ),

);</code>

登录后复制
登录后复制

试了array_map 没有成功。

1

2

3

4

5

6

<code>$array = [你的数组]

$newArray = array_reduce($array,function(&$newArray,$v){

    $newArray[$v['univs_id']] = $v;

    return $newArray;

});

</code>

登录后复制

$newArray就是你要的数组

$new_array = array_combine(array_column($array,'univs_id'),$array);

array_column在php5.5以上才能使用
低版本array_column实现

1

2

3

4

5

6

7

8

9

10

<code>if(!function_exists('array_column')){

  

    function array_column($array,$key){

        return array_map(

            function($element,$key){return $element[$key];},

            $array,

            array_fill(0,count($array),$key)

        );

    }

}</code>

登录后复制

php中不能直接改变数组的键名,需要添加新项然后删掉旧项。

1

2

<code>$arr[$newkey] = $arr[$oldkey];

unset($arr[$oldkey]);</code>

登录后复制
相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
怎么学好php
来自于 1970-01-01 08:00:00
0
0
0
PHP扩展intl
来自于 1970-01-01 08:00:00
0
0
0
php数据获取?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板