2015-01-04 3 views
-4

У меня есть несколько массивов, как показано ниже. Это результат данных, полученных из базы данных. Мне нужен конечный массив, чтобы иметь упомянутую структуру, потому что мне нужно, чтобы цикл «каждый» заходил в последовательный код. Я не могу использовать только цикл for.Проблемы с слиянием массивов

array('title' => 'Testing', 
      'content' => 'some text', 
      'created' => 'time', 
      'tags' => array(array('title' => 'hello')), 
    ) 
    array('title' => 'Testing', 
      'content' => 'some text', 
      'created' => 'time', 
      'tags' => array(array('title' => 'hello')), 
    ) 

Я хочу, чтобы объединить все это в массив формата:

array(
    array('notes' => 
     array('title' => 'Testing', 
       'content' => 'some text', 
       'created' => 'time', 
       'tags' => array(array('title' => 'hello')), 
     ), 
    ), 
    array('notes' => 
     array('title' => 'Testing', 
       'content' => 'some text', 
       'created' => 'time', 
       'tags' => array(array('title' => 'hello')), 
     ), 
    ), 
); 

Я пробовал много PHP функции, но никто не дал мне результат я хочу. Может кто-то мне помочь, пожалуйста? Есть ли встроенная функция PHP, которая может это сделать? Может ли кто-нибудь показать мне пример.

Спасибо.

+0

нет необходимости использовать функции, просто это просто простое назначение массива на новом с другим форматом. – Ghost

+0

Как мне это сделать? – user2604185

+0

Измените свой вопрос, чтобы уточнить, что вы просите. Неясно, что вы имеете в виду. Дайте два полных примера входов и выходов. – dionyziz

ответ

0

один possibilyti это сделать:

foreach($tags as $key => $note){ 
    $note["created"] = $created[$key]; //if created is an array 
    $note["created"] = $created; //if created is a string 
} 
+0

Я забыл добавить созданный во втором массиве. Это не проблема. – user2604185

2

Если я понять ваш вопрос правильно, все, что вы на самом деле хотите, чтобы сделать это место каждого из элементов массива в другой массив с ключом notes и значение бытия элемент (другой массив).

В этом случае либо с использованием foreach, либо array_map будет делать.

$newArray = array_map(function($v) { return ['notes' => $v]; }, $array); 

Или с помощью Еогеасп (более многословным способом) ...

foreach($array as $value) { 
    $newArray[] = ['notes' => $value]; 
} 
+0

Есть ли способ, которым я могу избежать [0] и [1] перед каждым [примечанием]? – user2604185

+0

А? Почему вы пытаетесь * избегать этого? Возможно, вы так плохо сформулировали вопрос, что ответ на этот вопрос на самом деле не поможет вам достичь того, чего вы хотите. Возможно, это результат запроса вопроса X/Y. Может быть, просто попробуйте спросить, что вы надеялись, что это сделает для вас? – Sherif

+0

Это часть задания Laravel. Я передаю новый массив в цикл foreach в шаблоне. – user2604185

1

это комментарий я хочу форматирование ...

Вы просили для «массива 'из записей в массиве, где каждая запись

  • - это массив
  • каждый массив имеет ключ «заметок» и связанный массив данных.

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

Вот код для создания и отображения «хотел» выход с записью «метки» изменилась:

$wanted = array(
      array('notes' => 
       array('title' => 'Testing 1', 
         'content' => 'some text 1', 
         'created' => date('Y-m-d H:i:s'), 
         'tags' => array('title' => 'hello', 
              'tagFoo' => 'foo'), 
       ), 
      ), 
      array('notes' => 
       array('title' => 'Testing 2', 
         'content' => 'some text 2', 
         'created' => date('Y-m-d H:i:s'), 
         'tags' => array('title' => 'hello', 
              'tagBar' => 'bar'), 
       ), 
      ), 
     ); 

echo '<pre>'; 
print_r($wanted); 
echo '</pre>'; 

Вот результат:

Array 
(
    [0] => Array 
     (
      [notes] => Array 
       (
        [title] => Testing 1 
        [content] => some text 1 
        [created] => 2015-01-04 15:39:34 
        [tags] => Array 
         (
          [title] => hello 
          [tagFoo] => foo 
         ) 
       ) 
     ) 

    [1] => Array 
     (
      [notes] => Array 
       (
        [title] => Testing 2 
        [content] => some text 2 
        [created] => 2015-01-04 15:39:34 
        [tags] => Array 
         (
          [title] => hello 
          [tagBar] => bar 
         ) 
       ) 
     ) 
) 
+0

Моя цель состояла в том, чтобы удалить предыдущие примечания [0] и [1]. Однако я нашел способ настроить приложение для работы с другим массивом. Спасибо, это хороший ответ. – user2604185

+1

рад, что вы разобрали подход к проблеме, который будет работать на вас. –

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