Использование только собственной функции PHP для получения значений массива из массива списков внутри массива

#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));
?>