Взгляните на этот код:
$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;
Вы можете использовать оператор Union ( +
), чтобы объединить массивы и сохранить ключи добавлено массива. Например:
<?php
$arr1 = array('foo' => 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;
print_r($arr3);
// prints:
// array(
// 'foo' => 'bar',
// 'baz' => 'bof',
// );
Так что вы могли бы сделать параметр $_GET += массив('Один' => 1);
.
Там'более подробная информация об использовании array_merge оператор Union против в документации по http://php.net/manual/en/function.array-merge.php.
Я хотел бы добавить мой ответ в таблицу и вот это :
//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);
надеемся, что это поможет кому-то
Именно то, что сказал Пекка...
В качестве альтернативы, вы можете использовать array_merge следующим образом:
array_merge($_GET, array($rule[0] => $rule[1]));
Но я бы предпочел метод Pekka', так как он намного проще.
Это решение, которое может быть полезно для 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)
Я как раз искал то же самое и понял, что, опять же, мое мышление отличается, потому что я старой закалки. Я вернулся к BASIC и PERL и иногда забываю, насколько просты вещи в PHP.
Я просто сделал эту функцию, чтобы взять все настройки из базы данных, где есть 3 столбца. setkey, item (ключ) & value (значение) и поместить их в массив под названием settings, используя тот же ключ/значение без использования push, как описано выше.
Довольно легко & просто на самом деле
// Получение всех настроек $settings=getGlobalSettings();
// Применить выбор темы пользователя $theme_choice = $settings['theme'];
... и т.д. и т.п. ....
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; Это автоматически push и объявление одновременно.
Я должен добавить, что в целях безопасности, (P)oor (H)elpless (P)rotection, я имею в виду Programming for Dummies, я имею в виду PHP.... hehehe я предлагаю вам использовать эту концепцию только для того, что я задумал. Любой другой метод может представлять угрозу безопасности. Вот, я сделал отказ от ответственности!
Интересно, почему самый простой способ не'т ниодного:
$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];
Это'ы так же как слияния двух массивов с array_merge
.
Немного поздно, но если вы Don'т ум вложенный массив, вы могли бы использовать этот подход:
$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" - а}]
Немного странно, но это сработало для меня
$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>";
}
$arr = array("key1"=>"value1", "key2"=>"value");
print_r($arr);
// выводит массив['ключ1'=>"и значение1" и, 'ключ2'=> наша"значение2" и]
array_push($arr, ['key1' => $value1, 'key2' => value2]);
Это работает просто отлично. создает ключ с значением в массиве
привет у меня была такая же проблема я нахожу это решение следует использовать тогда два массива объединить их обоих
<?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);
в PHP array_push($получи, $сделать['Один']=1);
Это работает для меня.
Пример array_merge()....
массив1 $ = блок("в цвет" у => "красным" в, 2, 4); $массив2 = блок("А", то "в”, на "Цвет" у => "Грин" В, С "Форма" в => наша "трапеция" и, 4); $результат = array_merge($массив1, массив2$); print_r($результат);
Массив([цвет] => зеленый,[0] => 2,[1] => 4,[2] => а[3] => Б,[форма] => трапеция,[4] => 4,)
Для добавления на первую позицию с "ключ" и "значение"
$newAarray = [newIndexname => newIndexValue] ;
$yourArray = $newAarray + $yourArray ;