2016-02-18 8 views
1

я в настоящее время есть массив, который содержит массив массивов:Merge массив в массив массивов

array(9) { 
     ["enabled"]=> 
     array(4) { 
     ["title"]=> 
     string(14) "Enable/Disable" 
     ["type"]=> 
     string(8) "checkbox" 
     ["label"]=> 
     string(25) "Enable" 
     ["default"]=> 
     string(3) "yes" 
     } 
    ["title"]=> 
    array(5) { 
    ["title"]=> 
    string(5) "Title" 
    ["type"]=> 
    string(4) "text" 
    ["description"]=> 
    string(60) "This controls the title which the user sees during checkout." 
    ["default"]=> 
    string(18) "Retail Finance" 
    ["desc_tip"]=> 
    bool(true) 
    } 

Этот массив называется $test. Теперь, как вы можете видеть в этом массиве, есть массив с именем "enabled" с индексом 0 и массив с именем "title" в индексе 1. Я хотел бы объединить другой ассоциативный массив между индексами 0 и 1. Я включил это ниже:

'enable_finance_calculator' => array(
      'title' => __('Enable Calculator', 'woocommerce'), 
      'type' => 'checkbox', 
      'label' => __('Enable Finance Calculator', 'woocommerce'), 
      'default' => 'yes' 
     ), 

Обычно при этом я бы использовал array_splice(), но это не обрабатывает ассоциативные массивы. Какой лучший вариант здесь?

ответ

2

Вид участие, но вы можете нарезать и объединить:

$test = array_merge(
      array_slice($test, 0, $pos=array_search('enabled', array_keys($test), true)+1, true), 
      $newarray, 
      array_slice($test, $pos, NULL, true) 
     ); 
  • Поиск по ключам массива чтобы найти положение и отрезать до этого
  • Объединить с новым массивом
  • Объединить кусочек с позиции до конца массива
+0

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

1

Вы должны быть в состоянии сделать это (не проверял):

// Get first item off from index 0 
$tempData = array_shift($data); 

// Add new array $newData at index 0 
array_unshift($data, $newData); 

// Add old data again at index 0, rest of items should get an incremented index, so $newData is at 1 and ['title'] is at 2 
array_unshift($data, $tempData); 
+0

Это добавляет числовые индексы, проверяет результат. – AbraCadaver

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

  • Нет связанных вопросов^_^