Caso você precise reduzir uma estrutura de array, você pode usar uma função de retorno de chamada anônima em vez de um loop foreach tradicional .
<?php
$sts = array(
array('id' => 100, 'slot' => 'a'),
array('id' => 200, 'slot' => 'b'),
array('id' => 300, 'slot' => 'c'),
array('is' => 400, 'slot' => 'd'),
);
$stis = array();
array_filter($sts, function($st) use(&$stis) {
if (isset($st['id'])) {
return $stis[] = $st['id'];
}
});
E o resultado será o seguinte com um elemento omitido que falha na cláusula de guarda incorporada na função anônima:
array(3) {
[0] =>
int(100)
[1] =>
int(200)
[2] =>
int(300)
}