2015-07-14 4 views
2

Я ищу более профессиональный метод для решения очень простой проблемы.Пилинг массива! лучший подход

У меня есть массив, как:

$originalArray = [ 
    0 => [ 
     'id' => 22, 
    ], 
    1 => [ 
     'id' => 9, 
    ], 
    2 => [ 
     'id' => 15, 
    ], 
] 

Зная все эти идентификаторы уникальны, я хочу, чтобы упростить массив что-то вроде:

$peeledResult = [ 
    0 => 22, 
    1=> 9, 
    2 => 15, 
] 

Ниже мое основное решение для него, но Мне было интересно, есть ли более элегантный метод для достижения того же.

$peeledResult = []; 
foreach ($originalArray as $item) { 
    $peeledResult[] = $role['id']; 
} 

Спасибо за любые советы заранее :)

+0

Отлично, спасибо @ Rizier123. Просто чтобы подтвердить метод 'array_column()', упомянутый в [одном из ответов] (http://stackoverflow.com/a/15720619/4960774), делает работу отлично! – Ali

ответ

3

Попробуйте с array_column (Возвращение значения из одного столбца в входном массиве)

$new = array_column($originalArray, 'id'); 

Или array_map -

$new = array_map(function($x) { 
    return $x['id']; 
}, $originalArray); 

Выход

array(3) { 
    [0]=> 
    int(22) 
    [1]=> 
    int(9) 
    [2]=> 
    int(15) 
} 
+0

Спасибо @ b0s3, извините, я был немного опоздал, чтобы принять ваш ответ до того, как вопрос был помечен как дублированный. – Ali

+0

Но, если честно, метод 'array_column()', предложенный в другом вопросе, делает работу намного чище, поэтому благодаря @ Rizier123 тоже;) – Ali

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