看看这段代码:
$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
不会以这种方式工作)
答案 0 :(得分:653)
不,关联数组没有array_push()
等价物,因为无法确定下一个关键字。
你必须使用
$arrayname[indexname] = $value;
答案 1 :(得分:66)
将值推入数组会自动为其创建数字键。
将键值对添加到数组时,您已经拥有该键,您不需要为其创建一个键值。将密钥推入数组是没有意义的。您只能在数组中设置特定键的值。
// no key
array_push($array, $value);
// same as:
$array[] = $value;
// key already known
$array[$key] = $value;
答案 2 :(得分:52)
您可以使用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);
。
有关http://php.net/manual/en/function.array-merge.php文档中联合运算符vs array_merge
使用情况的更多信息。
答案 3 :(得分:19)
我想在表格中添加我的答案,现在是:
//connect to db ...etc
$result_product = /*your mysql query here*/
$array_product = array();
$i = 0;
foreach ($result_product as $row_product)
{
$array_product [$i]["id"]= $row_product->id;
$array_product [$i]["name"]= $row_product->name;
$i++;
}
//you can encode the array to json if you want to send it to an ajax call
$json_product = json_encode($array_product);
echo($json_product);
希望这会对某人有所帮助
答案 4 :(得分:17)
Pekka说的正是......
或者,如果您愿意,可以像这样使用array_merge:
array_merge($_GET, array($rule[0] => $rule[1]));
但我更喜欢Pekka的方法,因为它更简单。
答案 5 :(得分:7)
我只是在寻找同样的事情,我意识到,再一次,我的想法是不同的,因为我老了。我一直回到BASIC和PERL,有时候我忘记了PHP中的事情真的很简单。
我刚刚使用此功能从数据库获取3列的所有设置。 setkey,item(key)&amp;使用相同的键/值将值(值)放入一个名为settings的数组中,而不像上面那样使用push。
非常简单&amp;很简单
// 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 =&gt;值
AND ...不需要先定义数组。
$阵列=阵列();
不需要定义或推送。只需分配$ array [$ key] = $ value;它同时自动推送和声明。
我必须补充一点,出于安全原因,(P)oor(H)elpless(P)rotection,我的意思是编程为傻瓜,我的意思是PHP ....呵呵我建议你只使用这个概念我想要的。任何其他方法都可能存在安全风险。在那里,做了我的免责声明!
答案 6 :(得分:7)
这是可能对你有用的解决方案
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)
答案 7 :(得分:4)
有点晚但如果你不介意嵌套数组,你可以采用这种方法:
$main_array = array(); //Your array that you want to push the value into
$value = 10; //The value you want to push into $main_array
array_push($main_array, array('Key' => $value));
澄清一下, 如果您输出 json_encode($ main_array),它将显示为 [{&#34; Key&#34;:&#34; 10&#34;}]
答案 8 :(得分:4)
有点奇怪,但这对我有用
$array1 = array("Post Slider", "Post Slider Wide", "Post Slider");
$array2 = array("Tools Sliders", "Tools Sliders", "modules-test");
$array3 = array();
$count = count($array1);
for($x = 0; $x < $count; $x++){
$array3[$array1[$x].$x] = $array2[$x];
}
foreach($array3 as $key => $value){
$output_key = substr($key, 0, -1);
$output_value = $value;
echo $output_key.": ".$output_value."<br>";
}
答案 9 :(得分:3)
$arr = array("key1"=>"value1", "key2"=>"value");
print_r($arr);
//打印数组['key1'=&gt;“value1”,'key2'=&gt;“value2”]
答案 10 :(得分:2)
我想知道为什么还没有发布最简单的方法:
$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];
将两个数组与array_merge
.
答案 11 :(得分:2)
嗨我有同样的问题我找到这个解决方案你应该使用两个数组,然后将它们两者结合起来
<?php
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");
$c=array_combine($fname,$age);
print_r($c);
?>
参考:w3schools
答案 12 :(得分:2)
要将"key"
和"value"
推送到现有数组,可以使用+=
快捷键运算符。
看这个非常简单的例子:
$GET = [];
$GET += ['one' => 1];
print_r($GET)
的结果将是:
Array
(
[one] => 1
)
希望这会有所帮助。
答案 13 :(得分:2)
array_push($ GET,$ GET ['one'] = 1);
适合我
答案 14 :(得分:1)
awk 'FNR==NR{a[$3]=$1;next}{print $0}' File2.txt File1.vcf > File3.vcf
这很好用。 使用数组
中的值创建键答案 15 :(得分:1)
示例array_merge()....
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
数组([color] =&gt; green,[0] =&gt; 2,[1] =&gt; 4,[2] =&gt; a,[3] =&gt; b,[shape] =&gt; ;梯形,[4] =&gt; 4,)
答案 16 :(得分:1)
简单的方法:
$GET = array();
$key = 'one=1';
parse_str($key, $GET);
答案 17 :(得分:0)
用于通过key
和value
添加到第一位置
$newAarray = [newIndexname => newIndexValue] ;
$yourArray = $newAarray + $yourArray ;
答案 18 :(得分:0)
我写了一个简单的函数:
function push(&$arr,$new) {
$arr = array_merge($arr,$new);
}
以便我可以轻松地“ upsert”新元素:
push($my_array, ['a'=>1,'b'=>2])
答案 19 :(得分:0)
这里已经给出了一些很好的例子。只需添加一个简单的示例即可将关联数组元素推入根数字索引index。
`$intial_content = array();
if (true) {
$intial_content[] = array('name' => 'xyz', 'content' => 'other content');
}`
答案 20 :(得分:-1)
我通常这样做:
$array_name = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);