2016-07-26 3 views
0

Я работаю над веб-проектом, и мне нужно знать, как получить номер элемента массива и использовать его для получения элемента из другого массива, I 'setup страницу для того, чтобы динамически добавлять панели Bootstrap с двумя полями ввода в них.Сбор и форматирование данных из динамической формы Post

<div class="panel panel-default"> 
    <div class="panel-heading"> 
     <a data-toggle="collapse" data-parent="#accordion" href="#<?php echo $index; ?>"> 
      <h4 class="panel-title"> 
       <?php echo $menu[0]; ?> <b class="caret pull-right"></b> 
      </h4> 
     </a> 
    </div> 
    <div id="<?php echo $index; ?>" class="panel-collapse collapse"> 
     <div class="panel-body"> 

      <div class="form-group"> 
       <label for="menu_name[]">Name:</label> 
       <input id="menu_name[]" name="menu_name[]"placeholder="Name"> 
      </div> 

      <div class="form-group"> 
       <label for="menu_link[]">Link:</label> 
       <input id="menu_link[]" name="menu_link[]" value="<?php echo $menu[1]; ?>" placeholder="URL"> 
      </div> 

      <div class="btn-group pull-right"> 
       <button class="btn btn-danger" type="submit" name="delete" value="<?php echo $index; ?>"><i class="fa fa-trash"></i> Delete</button> 
      </div> 

     </div> 
    </div> 

Эта форма предназначена для добавления меню, чтобы создать массив с текстом каждого пункта меню и ссылки, и когда я отправить форму это результат я получаю:

[["Home", "News"], ["http://localhost/", "http://localhost/news/"]] 

Но я хотите отформатировать массив, чтобы каждый пункт меню в отдельном массиве вместо разделения двух вариантов между массивами, вот пример вывода, который я хочу достичь:

[["Home", "http://localhost"], ["News", "http://localhost/news"]] 

Я не уверен, как это сделать, и я повсюду пытался найти решение или пример, чтобы помочь, но я ничего не могу найти, я делал некоторые исследования на array_search, но я не уверен если это то, что я хочу.

+0

может у опубликовать некоторый кусок кода, который это генерирующего ваш текущий массив? –

+0

Я не вижу, что такое использование, массив, который я дал, выбирается из MySQL как строка и декодируется с помощью json. – Elxafil

+0

получил. Таким образом, вы хотите, чтобы manupulate array помещал их в форму. –

ответ

1

Если я не ошибаюсь в проблеме, это решение.

$json = '[["Home", "News"], ["http://localhost/", "http://localhost/news/"]]'; 

list($names, $links) = json_decode($json); 

for ($k=0; $k<count($names); $k++) 
    echo sprintf('Link is "%s" for "%s"', $links[$k], $names[$k]).PHP_EOL; 

UPDATE

$json = '[["Home", "News"], ["http://localhost/", "http://localhost/news/"]]'; 
$output = array(); 

list($names, $links) = json_decode($json); 

for ($k=0; $k<count($names); $k++) 
    $output[] = array($names[$k], $links[$k]); 

Затем вы можете увидеть массив print_r функции.

print_r($output); 

И с json_encode JSON

echo json_encode($output); 
+0

Это не поможет мне извинить, мне просто нужно изменить порядок массива, например, если вы видите ту, которая находится наверху, показывает массив по умолчанию, а следующий ниже - то, как я хочу, чтобы он был изменен. – Elxafil

+0

Я просто обновляю свой ответ –

Смежные вопросы