Как нажимать и значение и ключ в массив

Взгляните на этот код:

$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() для ассоциативных массивов, потому что не существует способа определить следующий ключ.

Вы должны будете использовать

 $arrayname[indexname] = $value; 

Нажатие значения в массив автоматически создает для него цифровой ключ.

При добавлении пары «ключ-значение» в массив у вас уже есть ключ, вам не нужен тот, который будет создан для вас. Нажатие клавиши в массив не имеет смысла. Вы можете установить только значение определенного ключа в массиве.

 // 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); ,

Дополнительная информация об использовании оператора 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); 

надеюсь, что это поможет кому-то

Я просто искал то же самое, и я понял, что снова мое мышление отличается от того, что я старая школа. Я возвращаюсь к BASIC и PERL, и иногда я забываю, как легко на самом деле работают PHP.

Я просто сделал эту функцию, чтобы взять все настройки из базы данных, где их 3 столбца. setkey, item (key) & value (value) и поместить их в массив с настройками с использованием одного и того же ключа / значения без использования push, как указано выше.

Довольно легко и просто


 // Получить все настройки
 $ Настройки = getGlobalSettings ();


 // Применение выбора пользовательской темы
 $ theme_choice = $ settings ['theme'];

 .. и т.п и т.п и т.п ....




 функция getGlobalSettings () {

     $ dbc = mysqli_connect (wds_db_host, wds_db_user, wds_db_pass) или die ("Ошибка MySQL:". mysqli_error ());
     mysqli_select_db ($ dbc, wds_db_name) или 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'];  // НЕТ НУЖДАЮТСЯ ПУШ
         }
     mysqli_close ($ DBC);
 вернуть $ settings;
 }


Так как другие сообщения объясняют … В php нет необходимости в «PUSH» массиве, когда вы используете

Ключ => Значение

И … Нет необходимости сначала определять массив.

$ Массива = массив ();

Не нужно определять или нажимать. Просто присвойте $ array [$ key] = $ value; Он автоматически представляет собой push и декларацию одновременно.

Я должен добавить, что по соображениям безопасности, (P) oor (H) elpless (P) rotection, I означает «Программирование для чайников», я имею в виду 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"]

 array_push($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

Простой способ:

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

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

array_push ($ GET, $ GET ['one'] = 1);

работает на меня