看看这段代码:

$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不能这样工作)


当前回答

array_push($arr, ['key1' => $value1, 'key2' => value2]);

这工作得很好。 在数组中创建键及其值

其他回答

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

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

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

// key already known
$array[$key] = $value;

这是可能对你有用的解

Class Form {
# Declare the input as property
private $Input = [];

# Then push the array to it
public function addTextField($class,$id){
    $this->Input ['type'][] = 'text';
    $this->Input ['class'][] = $class;
    $this->Input ['id'][] = $id;
}

}

$form = new Form();
$form->addTextField('myclass1','myid1');
$form->addTextField('myclass2','myid2');
$form->addTextField('myclass3','myid3');

当你倾倒的时候。结果是这样的

array (size=3)
  'type' => 
    array (size=3)
      0 => string 'text' (length=4)
      1 => string 'text' (length=4)
      2 => string 'text' (length=4)
  'class' => 
    array (size=3)
      0 => string 'myclass1' (length=8)
      1 => string 'myclass2' (length=8)
      2 => string 'myclass3' (length=8)
  'id' => 
    array (size=3)
      0 => string 'myid1' (length=5)
      1 => string 'myid2' (length=5)
      2 => string 'myid3' (length=5)

我只是在寻找同样的东西,然后我又一次意识到,我的想法是不同的,因为我是守旧派。我一直在用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中,当你使用数组时,不需要“PUSH”数组

Key =>值

和…也不需要先定义数组。

$array=数组();

不需要定义或强迫。赋值$array[$key] = $value;它自动同时是一个推送和一个声明。

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

 $arr = array("key1"=>"value1", "key2"=>"value");
    print_r($arr);

/指纹阵列望远镜(key1”= >“value1”、“key2 = >“value2]

简单的方法:

$GET = array();    
$key = 'one=1';
parse_str($key, $GET);

http://php.net/manual/de/function.parse-str.php