Ваши входные данные (обогащенный с другими типов данных, -для испытания-) и предполагается, что вы используете последние версии PHP:
$input = array(
0=>
array(
"ID"=> "2"
),
1=>
array(
"ID"=> "3"
),
"iamnotanarray", 100, null
);
образцовую :
$out = array_map(function($el){ return @current($el);}, $input);
обычно:
$out = array_combine(
array_keys($ret)
,array_map(function($el){ return @current($el);}, $ret)
)
выход:
var_export($out);
array (
0 => '2',
1 => '3',
2 => NULL,
3 => NULL,
4 => NULL,
)
var_dump($out);
array(5) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
[2]=>
NULL
[3]=>
NULL
[4]=>
NULL
}
Для фильтрации потенциально нежелательных типов данных, вы можете использовать:
$out = array_filter($out, is_string);
var_dump($out);
array(2) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
}
Я не раз его (еще), но это используется P Встроенные функции HP. Скорость зависит от оптимизации gcc-компилятора вашего исполняемого файла PHP.
Примечание:@current
является грязным, не рекомендуется и просто используется для краткости/удобочитаемости. Он даст тот же эффект, что и is_array($el) ? current($el) : NULL;
Вы уверены, что ваши параметры верны ? –
@ChrisForrence Они сейчас. :) – kba
Отличное решение! Но это доступно только в PHP 5.5+ –