我看过很多帖子以各种形式回答这个问题,但似乎没有人能解决我的问题。
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搜索以获取更多信息的确切文本。
为了解决这个问题,我试过了
然后有一篇文章说试试这个,但我不明白这是如何改变 key 名称的,它似乎只是改变了元素的值。
$ arr [$ newkey] = $ arr [$ oldkey]; 未设置($ ARR [$ oldkey]);
它盯着我的脸,但我绕圈子走了。帮助
答案 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]);
}