Взгляните на этот код:
$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);
array_push ($ GET, $ GET ['one'] = 1);
работает на меня