2015-10-15 3 views
1

У меня есть массив из моей базы данных, как это:Удаление первого ключа многомерного массива

Array 
(
    [0] => Array 
     (
      [A] => Array 
       (
        [0] => A 
        [1] => 0 
        [2] => 0 
        [3] => 0 
       ) 

     ) 

    [1] => Array 
     (
      [C] => Array 
       (
        [0] => C 
        [1] => 6.9167 
        [2] => 0 
        [3] => 0 
       ) 

     ) 

    [2] => Array 
     (
      [D] => Array 
       (
        [0] => D 
        [1] => 6.9167 
        [2] => 0 
        [3] => 0 
       ) 

     ) 

) 

Как я могу удалить первый ключ ([0] => A, [0] => C, [0] => D) из этого многомерного массива?

Это мой желаемый результат массива:

Array 
    (
     [0] => Array 
      (
       [A] => Array 
        (
         [0] => 0 
         [1] => 0 
         [2] => 0 
        ) 

      ) 

     [1] => Array 
      (
       [C] => Array 
        (
         [0] => 6.9167 
         [1] => 0 
         [2] => 0 
        ) 

      ) 

     [2] => Array 
      (
       [D] => Array 
        (
         [0] => 6.9167 
         [1] => 0 
         [2] => 0 
        ) 

      ) 

    ) 
+0

uncelar что требуемый выход –

+0

вы сказали, что данные из БД, просто не выбирайте его, чтобы начать с –

+0

по какой-то причине я должен выбрать его таким образом – Simba

ответ

1

В это простейшая (у меня нет времени для не петли одного):

foreach($array as $k1 => $inner) { 
    foreach($inner as $k2 => $value) { 
     unset($array[$k1][$k2][0]); 
    } 
} 
+0

Спасибо @AbraCadaver. Он работает и прост. – Simba

0

Это ужасно, но должен работать для тебя. Он использует ключ 2-го уровня в качестве значения элемента для удаления на следующий уровень

$array = array(
    array('A' => array('A', 100, 200)), 
    array('B' => array('B', 100, 200)), 
); 

foreach($array as $key => $subarray){ 
    foreach($subarray as $letter_key => $target_array){ 
     $index_to_delete = array_search($letter_key, $target_array); 
     unset($array[$key][$letter_key][$index_to_delete]); 
    } 
} 

print_r($array); 
0

использование unset

$array = array(
    array(
     'A' => array(
      'A', 0, 0, 0 
     ) 
    ), 
    array(
     'C' => array(
      'C', 0, 0, 0 
     ) 
    ) 
); 


foreach ($array as $key => $value) { 
    $erase = key($value); 
    unset($array[$key][$erase][0]); 
    // this resets the ordinal sequence from 1,2,3 to 0,1,2 
    $a[$key][$erase] = array_values($array[$key][$erase]); 
}