2010-08-09 3 views
3

У меня есть этот массив:Как я могу упростить этот массив?

Array 
(
    [0] => Array 
     (
      [tag_id] => 1 
     ) 

    [2] => Array 
     (
      [tag_id] => 3 
     ) 

    [22] => Array 
     (
      [tag_id] => 44 
     ) 

    [23] => Array 
     (
      [tag_id] => 45 
     ) 

    [25] => Array 
     (
      [tag_id] => 47 
     ) 

    [26] => Array 
     (
      [tag_id] => 48 
     ) 

) 

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

Array 
(
    [0] => 1 
    [1] => 3 
    [2] => 44 
    [3] => 45 
    [4] => 47 
    [5] => 48 
) 
+4

Как вы создали массив в первую очередь? Или эти данные отправляются вам, т. Е. У вас нет контроля? –

ответ

8

Вы можете использовать array_map.

PHP 5.3 или выше:

$callback = function($value) { 
    return $value['tag_id']; 
}; 
$result = array_map($callback, $array); 

Ниже 5,3:

function collapseTagIds($value) { 
    return $value['tag_id']; 
} 
$result = array_map('collapseTagIds', $array); 
+1

Оба из ваших answes пригодились, я был в шоке от того, почему это не сработало, когда я перешел на живой сервер. Отправленный здесь, и вы сохранили меня еще раз (версии PHP были разные), поэтому просто хотел сказать спасибо! – Danny

3

Ну, вы мог бы сделать это:

$new_array = array(); 
foreach($array as $key => $value) 
{ 
    $new_array[$key] = $value['tag_id']; 
} 
print_r($new_array); 
+0

связанных. http://davidwalsh.name/flatten-nested-arrays-php – Incognito

1

В вашем случае, у вас есть только один индекс на $value. Если вы не хотите указывать имя индекса, просто сделайте это:

$new_array = array(); 
foreach($array as $key => $value) { 
    $new_array[$key] = reset($value); 
} 
print_r($new_array); 
+1

Могу ли я предположить, что сброс ($ value) не может быть легко читаемым и интуитивно понятным для начинающего программиста. Конечно, это работает, но альтернативный '$ value ['tag_id']' может быть более уместным здесь. –

+0

Да .. вы правы. Но используя его, новичок будет (или должен) читать руководство или искать больше об этом .. увеличение знаний. Это моя точка зрения. Благодаря.. –

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