#php
#php
Вопрос:
У меня есть массив ниже:
$arr = array(
array(
'name' => 'ABC'
),
array(
'name' => 'CDF'
),
array(
'name' => 'GHI'
)
)
Как я могу преобразовать только с помощью собственной функции в PHP:
$arr = array( 'ABC', 'CDF', 'GHI');
Ответ №1:
$arr = array_map('current', $arr);
Комментарии:
1. На всякий случай, если указатель одного из массивов был перемещен за первый элемент, я полагаю, вы можете использовать
reset
вместоcurrent
, но идея та же.2. @David На самом деле это не имеет значения, массивы, переданные
current
обратному вызову, сбрасывают свои указатели.3. Это потому, что они передаются копией в обратный вызов или какой-то магией, предоставляемой
array_map
?4. @David Да. 😉 (Т.е. я не могу сказать наверняка, но я подозреваю, что copy.)
Ответ №2:
function flatten($input) {
$output = array()
foreach($input as $value) {
if (is_array($value)) {
$output = array_merge($output, flatten($value));
} else {
$output[] = $value;
}
}
return $output;
}
Ответ №3:
<?php
$arr = array(
array(
'name' => 'ABC'
),
array(
'name' => 'CDF'
),
array(
'name' => 'GHI'
)
);
function MultiDimensionToSingleDimension($array, $index='name') {
$return = array();
if (is_array($array)) {
foreach ($array as $row) {
$return[] = $row[$index];
}
}
return $return;
}
print_r(MultiDimensionToSingleDimension($arr));
?>