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

时间:2016-03-16 01:44:00

标签: php arrays codeigniter

我看过很多帖子以各种形式回答这个问题,但似乎没有人能解决我的问题。

PHP 5.5.8 + CodeIgniter

完整图片:

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>";`

创建HTML下拉列表,其中包含数值作为选项,而不是部门标题的实际单词。

我正试图得到这个结果:

["Dept 1"] => Dept 1
["Dept 2"] => Dept 2
["Dept 3"] => Dept 3
.....

..因为当我购买我的视图时,值选项将是放入我的SQL搜索以获取更多信息的确切文本。

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

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

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

它盯着我的脸,但我绕圈子走了。帮助

3 个答案:

答案 0 :(得分:0)

试试这个:

foreach($PGroups as $key=>$value) $x[$value] = $value;
echo "<td>" .  form_dropdown('PurchasingGroup', $x). "</td>";

答案 1 :(得分:0)

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

$arr = array_combine( $arr, $arr );
print_r( $arr );

将输出:

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

documentation

答案 2 :(得分:0)

试试这个。

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