Как протолкнуть значение и ключ в массив
взгляните на этот код:
$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 не будет работать этот способ)
16 ответов:
нет, нет
array_push()эквивалент для ассоциативных массивов, потому что нет способа определить следующий ключ.вам придется использовать
$arrayname[indexname] = $value;
толкал значение в массиве автоматически создает для него числовой ключ.
при добавлении пары ключ-значение в массив, у вас уже есть ключ, вам не нужно, чтобы он был создан для вас. Нажатие клавиши в массив не имеет смысла. Вы можете установить только значение определенного ключа в массиве.
// no key array_push($array, $value); // same as: $array[] = $value; // key already known $array[$key] = $value;
вы можете использовать оператор 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 vs
array_mergeв документации по адресу http://php.net/manual/en/function.array-merge.php.
именно то, что сказал Пекка...
кроме того, вы можете, вероятно, использовать 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);надеюсь, что это поможет кому-то
Я просто сделал эту функцию, чтобы взять все настройки из базы данных, где их 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 нет необходимости "толкать" массив при использовании
Ключ => Значение
а... Нет необходимости сначала определять массив.
$array=array ();
Не нужно определять или толкать. Просто назначьте $array[$key] = $value; это автоматически толчок и объявление одновременно.
Я должен добавить, что для из соображений безопасности, (п)оор (ч)elpless (П)защита, Я средства программирования для чайников, я имею в виду на PHP.... хе-хе я предлагаю вам использовать эту концепцию только для того, что я намеревался. Любой другой метод может представлять угрозу безопасности. Там, мой отказ!
это решение, которое может быть полезно для U
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) это будет выглядеть как [{"Ключ":"10"}]
$arr = array("key1"=>"value1", "key2"=>"value"); print_r($arr);/ / печатает массив ['key1' =>" value1", 'key2'= > "value2"]
мне интересно, почему самый простой метод еще не был опубликован:
$arr = ['company' => 'Apple', 'product' => 'iPhone']; $arr += ['version' => 8];это то же самое, как слияние двух массивов вместе с
array_merge.
привет у меня была такая же проблема я нахожу это решение вы должны использовать два массива затем объединить их оба
<?php $fname=array("Peter","Ben","Joe"); $age=array("35","37","43"); $c=array_combine($fname,$age); print_r($c); ?>ссылки : w3schools
пример 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);Array ([color] = > зеленый,[0] => 2,[1] => 4,[2] => a, [3] = >b, [shape] = > трапеция,[4] => 4,)
array_push($arr, ['key1' => $value1, 'key2' => value2]);это работает просто отлично. создает ключ с его значением в массиве
Comments