Home  >  Article  >  Backend Development  >  二维数组中的一个【键的值】作为一维的 【键】

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

WBOY
WBOYOriginal
2016-06-06 20:28:031202browse

<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进行遍历如何能达到下面的效果

<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 没有成功。

回复内容:

<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进行遍历如何能达到下面的效果

<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 没有成功。

<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实现

<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中不能直接改变数组的键名,需要添加新项然后删掉旧项。

<code>$arr[$newkey] = $arr[$oldkey];
unset($arr[$oldkey]);</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn