🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 二维数组变一维数组 二维数组变一维数组,且二维数组的其中的一个值作为键值。如下: 原数组: ``` $result = [ ['id'=>1,'name'=>'北京'], ['id'=>2,'name'=>'山西'] ]; ``` 变化后的数组: ``` $result = [1=>'山西省',2=>'北京市']; ``` ### 方法一: 个人自认为这种方法比较麻烦,待有更好的方法再说吧 ``` $newArray = array_reduce($result,function(&$newArray,$v){ $newArray[$v['id']] = $v; return $newArray; }); foreach($newArray as $key => $value){ $arr[$key] = $value['name']; } ``` ### 方法二: ``` $arr = field_as_key($result,'id'); foreach($newArray as $key => $value){ $arr[$key] = $value['name']; } ``` 这个 `field_as_key` 的函数如下: ``` if (!function_exists('field_as_key')) { /** * 二维数组用某个二维元素的值作为一维元素的键 * 常用于数据库结果用某个字段作为记录的索引键 * @author Baiyu 2017-01-23 * @param array $array 输入数组 * @param string $field 要作为键的字段名 * @param bool $unique 要做键的字段是否唯一(该字段与记录是否一一对应) * @return array */ function field_as_key($array, $field, $unique = FALSE) { $result = array(); foreach ($array as $item) { if (isset($item[$field])) { if (!$unique && isset($result[$item[$field]])) { $unique = TRUE; $result[$item[$field]] = array($result[$item[$field]]); $result[$item[$field]][] = $item; } elseif ($unique) { $result[$item[$field]][] = $item; } else { $result[$item[$field]] = $item; } } } return $result; } } ```