💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 二维数组中的一个【键的值】作为一维的 【键】 原数组 ``` Array ( [0] => Array ( [id] => 1 [name] => hongwei ) [1] => Array ( [id] => 2 [name] => zhangwei ) ) ``` 想要变化后的数组 ``` Array ( [1] => Array ( [id] => 1 [name] => hongwei ) [2] => Array ( [id] => 2 [name] => zhangwei ) ) ``` ## 方法1: ``` $arr = [ ['id'=>1,'name'=>'hongwei'], ['id'=>2,'name'=>'zhangwei'] ]; $newArr = array_reduce($arr,function(&$newArr,$v){ $newArr[$v['id']] = $v; return $newArr; }); print_r($arr); print_r($newArr);exit; ``` ## 方法2: ``` $arr = [ ['id'=>1,'name'=>'hongwei'], ['id'=>2,'name'=>'zhangwei'] ]; $newArr = []; foreach ($arr as $m) { $newArr[$m['id']] = $m; } print_r($arr); print_r($newArr);exit; ``` ## 方法3: ``` $arr = [ ['id'=>1,'name'=>'hongwei'], ['id'=>2,'name'=>'zhangwei'] ]; $newArr = field_as_key($arr,'id'); print_r($arr); print_r($newArr);exit; ``` 函数如下: ``` 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; } } ```