PHP добавляет еще один элемент в массив

#php #arrays #backend

Вопрос:

Я хотел бы добавить новые элементы в массив из html-формы, но я не понимаю, как добавить новый элемент в основной массив с помощью этой структуры, я попытался array_push, но мне не удалось

 $menu = array(
               "1" => array (
                               "title" => 'Glowna',
                               "page"  => 'home', 
                               "url"   => "index.php",
                                ),
               "2" => array (
                               "title" => "Cennik",
                               "page"  => 'services',
                               "url"   => "index.php"            
                                       ),                                      
               "3" => array (
                               "title" => 'Portfolio',
                               "page"  => 'portfolio',
                               "url"   => "index.php"           
                                       ),
               "4" => array (
                               "title" => 'O nas',
                               "page"  => 'about',
                               "url"   => "index.php"               
                                       ),                      
               "5" => array (
                               "title" => 'Kontakt',
                               "page"  => 'contact',
                               "url"   => "index.php"             
                                       )
);
?>
 

Ответ №1:

Вам нужно будет определить ключ, который , скорее всего, будет "6" , а затем указать массив в качестве значения. Ваш код может выглядеть примерно так:

 $menu['6'] = array( 'title' => "Archives",
                    'page'  => "archives",
                    'url'   => "archives.php");
 

Вот и все, что нужно сделать.

Комментарии:

1. вам нужно обновить «архивы» как «архивы».

2. Хороший улов. Спасибо за это.

Ответ №2:

Ваш $menu массив называется ассоциативным массивом, поскольку он содержит строковые значения для ключей.

Для ассоциативных массивов вы не можете использовать array_push .

Что вы можете сделать, так это

 $menu["key"] = array("title" => 'Kontakt',"page" => 'contact',"url" => "index.php")
 

Но, глядя на ваш массив, вы можете иметь числовые индексы вместо строковых. Если вы используете следующую структуру, вы можете использовать array_push

 $menu = array(array ("title" => 'Glowna',
                     "page"  => 'home', 
                     "url"   => "index.php"),
              array ( "title" => "Cennik",
                      "page"  => 'services',
                      "url"   => "index.php"))
 

Обратите внимание на удаление «строковых ключей» (например: "1" => array() ),

Теперь вы можете использовать array_push;

 array_push($menu, array("title" => "Cennik", "page"  => 'services', "url"   => "index.php"))
 

Ответ №3:

Я попытался сделать array_push с вашим примером, и это сработало отлично, в чем проблема?

Что касается того, что другие сказали ниже, похоже, php все еще распознает строковые ключи, если они числовые, потому что array push отлично работает, даже если ключи массивов являются числовыми строками. То, что они сказали, возможно, относится к ключам, которые являются истинными строками или не в числовом порядке.

 $menu = array(
        "1" => array (
                        "title" => 'Glowna',
                        "page"  => 'home', 
                        "url"   => "index.php",
                         ),
        "2" => array (
                        "title" => "Cennik",
                        "page"  => 'services',
                        "url"   => "index.php"            
                                ),                                      
        "3" => array (
                        "title" => 'Portfolio',
                        "page"  => 'portfolio',
                        "url"   => "index.php"           
                                ),
        "4" => array (
                        "title" => 'O nas',
                        "page"  => 'about',
                        "url"   => "index.php"               
                                ),                      
        "5" => array (
                        "title" => 'Kontakt',
                        "page"  => 'contact',
                        "url"   => "index.php"             
                                )
);

array_push($menu, array("title" => 'number 6', "page"  => 'something', "url"   => "works.php"));

var_export($menu);
 

Результаты:

 array (
  1 => 
  array (
    'title' => 'Glowna',
    'page' => 'home',
    'url' => 'index.php',
  ),
  2 => 
  array (
    'title' => 'Cennik',
    'page' => 'services',
    'url' => 'index.php',
  ),
  3 => 
  array (
    'title' => 'Portfolio',
    'page' => 'portfolio',
    'url' => 'index.php',
  ),
  4 => 
  array (
    'title' => 'O nas',
    'page' => 'about',
    'url' => 'index.php',
  ),
  5 => 
  array (
    'title' => 'Kontakt',
    'page' => 'contact',
    'url' => 'index.php',
  ),
  6 => 
  array (
    'title' => 'number 6',
    'page' => 'something',
    'url' => 'works.php',
  ),
)
 

Живая демонстрация: http://sandbox.onlinephpfunctions.com/code/76d5dab43255459455f2e80e37ab281486009fc4