将内部数组转换为外部数组的索引而不使用PHP中的foreach?

时间:2016-02-29 07:04:10

标签: php arrays

我有以下数组

Array
(
    [0] => Array
        (
            [id] => 1120
        )

    [1] => Array
        (
            [id] => 1127
        )

    [2] => Array
        (
            [id] => 16101
        )

    [3] => Array
        (
            [id] => 16441
        )

    [4] => Array
        (
            [id] => 18447
        )
)

我想将上面的数组转换为这种形式:

Array
    (
        [0]  => 1120

        [1] =>  1127

        [2] => 16101

        [3] => 16441

        [4] => 18447
    )

但条件是必须不使用foreach 。这可能吗?

6 个答案:

答案 0 :(得分:4)

PHP解决方案> = 5.5 - array_column函数:

// assuming $arr is your initial array
$result = array_column($arr, 'id');

var_dump($result);
// the output:
Array
    (
        [0]  => 1120

        [1] =>  1127

        [2] => 16101

        [3] => 16441

        [4] => 18447
    )

http://php.net/manual/en/function.array-column.php

答案 1 :(得分:0)

您可以使用array_column功能

执行此操作
$final_array = array_column($your_array, "id");

答案 2 :(得分:0)

您可以使用array_column执行此操作。

var_dump(array_column([['id' => 1],['id'=>2]], 'id'));

/*
gives you..

array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
*/

答案 3 :(得分:0)

array_combine(array_keys($arr), array_map(function($item) { return $item['id']; }, $arr));

答案 4 :(得分:0)

对于PHP版本>=4.0.6,您可以像{/ p>一样使用array_map

$arr = array(array('id' => 1),array('id' => 2),array('id' => 3));
function call_function($v){ 
    return $v['id'];
}
$result = array_map('call_function',$arr);
print_r($result);

相反,您可以简单地使用reset函数,因为@Ghost表示如

$arr = array(array('id' => 1),array('id' => 2),array('id' => 3));
$result = array_map('reset',$arr);
print_r($result);

<强>输出

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

Demo

答案 5 :(得分:0)

$arrFirstArray = array(
    '0' => array(
        'id' => 1120
    ),
    '1' => array(
        'id' => 1127
    ),
    '2' => array(
        'id' => 16101
    ),
    '3' => array(
        'id' => 16441
    ),
    '4' => array(
        'id' => 18447
        ));

echo $intFirstArray = count($arrFirstArray);

$arrSecondArray = array();
for ($intI = 0; $intI < $intFirstArray; $intI++)
{
    global $arrSecondArray;
    $arrSecondArray[] = $arrFirstArray[$intI]['id'];
}
echo '<pre>';
print_r($arrSecondArray);

这肯定会奏效。