Php 如何更改数组中键的名称?

Php 如何更改数组中键的名称?,php,arrays,codeigniter,Php,Arrays,Codeigniter,我见过许多帖子以各种形式回答这个问题,但不知何故,似乎没有一篇能够完全解决我的问题 PHP 5.5.8+代码点火器 全貌: SQL查询生成部门名称数组 $strSQL = "SELECT DISTINCT DepartmentName FROM ... $query=$this->db->query($strSQL); $data=$query->result_array(); 我将阵列展平,使其变得非常简单 $flatArray = array_column($data,

我见过许多帖子以各种形式回答这个问题,但不知何故,似乎没有一篇能够完全解决我的问题

PHP 5.5.8+代码点火器

全貌:

SQL查询生成部门名称数组

$strSQL = "SELECT DISTINCT DepartmentName FROM ...
$query=$this->db->query($strSQL);
$data=$query->result_array();
我将阵列展平,使其变得非常简单

$flatArray = array_column($data, 'DepartmentName');
array_unshift($flatArray, "");
return $flatArray;
然后返回到我的控制器,在表单上创建下拉框

但是,数组的形式如下:

[PGroups] => Array
                    (
                        [0] => Dept 1
                        [1] => Dept 2
                        [2] => Dept 3
                         .....
在我(基于CodeIgniter)的观点中,我有:

`echo "<td>" .  form_dropdown('PurchasingGroup', $PGroups). "</td>";`
…因为当我购买视图时,值选项将是放入SQL搜索以检索进一步信息的确切文本

为了解决这个问题,我已经试过了

  • 在SQL语句中执行某些操作,但这不会影响键名称-死胡同
  • 然后一篇帖子说要试试这个,但我不明白它是如何改变键名的,它似乎只是改变了元素的值

    $arr[$newkey]=$arr[$oldkey]; 未设置($arr[$oldkey])

它直视着我的脸,但我却在兜圈子。帮助?

试试这个:

foreach($PGroups as $key=>$value) $x[$value] = $value;
echo "<td>" .  form_dropdown('PurchasingGroup', $x). "</td>";
foreach($PGroups as$key=>$value)$x[$value]=$value;
“回声”。表单_下拉列表('PurchasingGroup',$x)。"";

要替换旧的数组值,必须执行一个非常简单的命令:

$arr = array_combine( $arr, $arr );
print_r( $arr );
将输出:

Array
(
    [Dept 1] => Dept 1
    [Dept 2] => Dept 2
    [Dept 3] => Dept 3
)

试试这个

            $tmp = Array
                (
                    [0] => 'Dept 1',
                    [1] => 'Dept 2',
                    [2] => 'Dept 3'
                );
            foreach($tmp as $i => $val)
            {
                $tmp['Dept '.($i+1)] = $val;
                unset($tmp[$i]);
            }

$arr[$newkey]=$arr[$oldkey]
使用key
$newkey
$arr[$oldkey]
的内容复制到另一个数组元素。但在您的情况下,它应该是
$arr[$arr[$oldkey]]=$arr[$oldkey]
,因为您希望键和值相同。答案本身很简单:
$arr=array\u combine($arr,$arr)
但我不明白您是否只想修改
$flatary
甚至是原始
$data
我想要的最终结果是一个键名和键值完全相同的平面数组。无论如何。@fusion3k-谢谢你。。。这正是我想要的。如何将其标记为“答案”?@Maxcot使用绿色复选框图像
            $tmp = Array
                (
                    [0] => 'Dept 1',
                    [1] => 'Dept 2',
                    [2] => 'Dept 3'
                );
            foreach($tmp as $i => $val)
            {
                $tmp['Dept '.($i+1)] = $val;
                unset($tmp[$i]);
            }