如何将数值和键都推到数组中
看看这个代码:
$GET = array(); $key = 'one=1'; $rule = explode('=', $key); /* array_push($GET, $rule[0] => $rule[1]); */
我正在寻找这样的事情:
print_r($GET); /* output: $GET[one => 1, two => 2, ...] */
有这样的function吗? (因为array_push
不会以这种方式工作)
不,不存在关联数组的array_push()
等价物,因为没有办法确定下一个关键字。
你必须使用
$arrayname[indexname] = $value;
将值推入数组会自动为其创build一个数字键。
向数组添加键值对时,您已经拥有了该键,您不需要为其创build一个键。 将一个键推入数组没有任何意义。 您只能设置数组中特定键的值。
// no key array_push($array, $value); // same as: $array[] = $value; // key already known $array[$key] = $value;
您可以使用联合运算符( +
)来组合数组,并保留添加的数组的键。 例如:
<?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文档中有关于union运算符vs array_merge
的更多信息。
究竟是什么佩卡说…
或者,你可以像这样使用array_merge,如果你想要的话:
array_merge($_GET, array($rule[0] => $rule[1]));
但我更喜欢佩卡的方法,因为它更简单。
我想添加我的答案,在这里是这样的:
//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);
希望这会帮助别人
我只是在寻找同样的东西,我意识到,再一次,我的想法是不同的,因为我是老派。 我一路回到BASIC和PERL,有时候我忘记了在PHP中真正的事情。
我只是让这个函数从数据库中取3列的所有设置。 设置键,项目(键)和值(值),并使用相同的键/值将它们放入一个名为settings的数组中,而不用像上面那样使用push。
真的很容易和简单
//获取所有设置 $设置= getGlobalSettings(); //应用用户主题select $ theme_choice = $ settings ['theme']; ..等等等等... 函数getGlobalSettings(){ $ dbc = mysqli_connect(wds_db_host,wds_db_user,wds_db_pass)或死(“MySQL Error:”。mysqli_error()); mysqli_select_db($ dbc,wds_db_name)或者死(“MySQL Error:”。mysqli_error()); $ MySQL =“SELECT * FROM systemSettings”; $ result = mysqli_query($ dbc,$ MySQL); while($ row = mysqli_fetch_array($ result)) { $ settings [$ row ['item']] = $ row ['value']; //不需要推 } mysqli_close($ DBC); 返回$设置; }
所以像其他post解释…在PHP中,没有必要“推”一个数组,当你使用
键=>值
AND …没有必要先定义数组。
$arrays=arrays();
不需要定义或推送。 只要分配$ array [$ key] = $ value; 这是自动推和声明在同一时间。
我必须补充说,出于安全原因,(P)或(H)无限(P)保护,我的意思是编程傻瓜,我的意思是PHP …. hehehe我build议你只使用这个概念为我的意图。 任何其他方法都可能是安全风险。 在那里,做了我的免责声明!
这是对你有用的解决scheme
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)
有点奇怪,但是这对我有效
$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>"; }
有点晚,但如果你不介意嵌套数组,你可以采取这种方法:
$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)看起来像[{“Key”:“10”}]
$arr = array("key1"=>"value1", "key2"=>"value"); print_r($arr);
//打印数组['key1'=>“value1”,“key2”=>“value2”]
array_push($arr, ['key1' => $value1, 'key2' => value2]);
这工作得很好。 用它在数组中的值创build键
我想知道为什么最简单的方法还没有发布:
$arr = ['company' => 'Apple', 'product' => 'iPhone']; $arr += ['version' => 8];
这和使用array_merge
将两个数组合并在一起是一样的。
嗨,我有同样的问题,我觉得这个解决scheme,你应该使用两个数组,然后将他们两个
<?php $fname=array("Peter","Ben","Joe"); $age=array("35","37","43"); $c=array_combine($fname,$age); print_r($c); ?>
参考: w3schools
简单的方法:
$GET = array(); $key = 'one=1'; parse_str($key, $GET);