如何将值和键都推送到数组中

本小妞迷上赌 提交于 2020-03-20 14:47:23

3 月,跳不动了?>>>

看看这段代码:

$GET = array();    
$key = 'one=1';
$rule = explode('=', $key);
/* array_push($GET, $rule[0] => $rule[1]); */

我正在寻找这样的东西,以便:

print_r($GET);
/* output: $GET[one => 1, two => 2, ...] */

有这个功能吗? (因为array_push不会这样工作)


#1楼

您可以使用union运算符( + )组合数组并保留添加的数组的键。 例如:

<?php

$arr1 = array('foo' => 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;

print_r($arr3);

// prints:
// array(
//   'foo' => 'bar',
//   'baz' => 'bof',
// );

所以你可以做$_GET += array('one' => 1);

有关union运算符与array_merge的使用的更多信息,请参阅http://php.net/manual/en/function.array-merge.php中的文档。


#2楼

不,没有关联数组的array_push()等价物,因为无法确定下一个键。

你必须使用

$arrayname[indexname] = $value;

#3楼

正是佩卡说的......

或者,如果您需要,可以使用如下所示的array_merge:

array_merge($_GET, array($rule[0] => $rule[1]));

但我更喜欢Pekka的方法,因为它更简单。


#4楼

我只是在寻找同样的事情,我意识到,再一次,我的想法是不同的,因为我老了。 我一直回到BASIC和PERL,有时候我忘记了PHP中的实际问题。

我刚刚使用此功能从数据库获取所有设置,它们是3列。 setkey,item(key)&value(value)并使用相同的键/值将它们放入一个名为settings的数组中,而不像上面那样使用push。

非常简单和简单

// Get All Settings
$settings=getGlobalSettings();


// Apply User Theme Choice
$theme_choice = $settings['theme'];

.. etc etc etc ....




function getGlobalSettings(){

    $dbc = mysqli_connect(wds_db_host, wds_db_user, wds_db_pass) or die("MySQL Error: " . mysqli_error());
    mysqli_select_db($dbc, wds_db_name) or die("MySQL Error: " . mysqli_error());
    $MySQL = "SELECT * FROM systemSettings";
    $result = mysqli_query($dbc, $MySQL);
    while($row = mysqli_fetch_array($result)) 
        {
        $settings[$row['item']] = $row['value'];   // NO NEED FOR PUSH
        }
    mysqli_close($dbc);
return $settings;
}

所以像其他帖子一样解释...在php中,当你使用时不需要“推”一个数组

Key => Value

AND ...也没有必要先定义数组。

$阵列=阵列();

不需要定义或推送。 只需分配$ array [$ key] = $ value; 它同时自动推送和声明。

我必须补充一点,出于安全原因,(P)oor(H)elpless(P)rotection,我的意思是编程为傻瓜,我的意思是PHP ....呵呵我建议你只使用这个概念我想要的。 任何其他方法都可能存在安全风险。 在那里,做了我的免责声明!


#5楼

将值入数组会自动为其创建数字键。

将键值对添加到数组时,您已经拥有该键,您不需要为其创建一个键值。 将密钥推入数组是没有意义的。 您只能在数组中设置特定键的值。

// no key
array_push($array, $value);
// same as:
$array[] = $value;

// key already known
$array[$key] = $value;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!