PHP将关联数组的键值存储到Simple Array中

时间:2013-12-23 14:56:59

标签: php arrays associative-array

我无法解决这个问题,任何帮助都会 GREAT ......

我有一个数组$ stores,其结构如下:

Array
(
[0] => Array
    (
        [id] => 123
        [name] => 'Store A'
    )

[1] => Array
    (
        [id] => 345
        [name] => 'Store B'
    )

[2] => Array
    (
        [id] => 567
        [name] => 'Store C'
    )

[3] => Array
    (
        [id] => 789
        [name] => 'Store D'
    )
)

我想从这个数组中提取'id'值到一个看起来像这样的简单数组:

$simple = array(123,345,567,789);

5 个答案:

答案 0 :(得分:9)

如果使用php 5.5+, array_column()非常有用:

$simple = array_column($yourarray,'id');

http://php.net/array_column

答案 1 :(得分:3)

Calimero肯定是PHP 5.5+的最佳答案,但如果你想在以前的版本中使用相同的功能,请查看此存储库:https://github.com/ramsey/array_column。它由PHP 5.5 array_column创建者本身编写。

答案 2 :(得分:2)

如果您无法使用array_column,则可以使用array_map

$names = array(
    array('id' => 123, 'name' => 'A'),
    array('id' => 456, 'name' => 'B'),
    array('id' => 789, 'name' => 'C'),
);

$ids = array_map(function ($name) {
    return $name['id'];
}, $names);

var_dump($ids);

// output
array(3) {
    [0] => int(123)
    [1] => int(456)
    [2] => int(789)
}

答案 3 :(得分:2)

  

如果您无法升级php版本,可以使用以下语法。在这种情况下,使用if (!function_exists('array_column'))来防止在版本升级时重新声明函数。

说明来自php.net

  

array_column()返回数组的单个列中的值,由column_key标识。 (可选)您可以提供index_key,以通过输入数组中index_key列的值索引返回数组中的值。

/* Function array_column equivalent to php's array_column */
if (!function_exists('array_column'))
{

    function array_column(array $array, $column_key, $index_key = NULL)
    {
        if (isset($array))
        {
            $return = array();
            foreach ($array as $a)
            {
                if ($index_key)
                {
                    if (!isset($a[$index_key]))
                    {
                        return array();
                    }
                    else
                    {
                        $return[$a[$index_key]] = $a[$column_key];
                    }
                }
                else
                {
                    $return[] = $a[$column_key];
                }
            }
            return $return;
        }
        return array();
    }
}
  

以下是从PHP.NET

中提取的一些示例
<?php
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);

$first_names = array_column($records, 'first_name');
print_r($first_names);
?>

它将给出以下输出:

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

从记录集中获取姓氏列,由“id”列索引

<?php
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>

它将为您提供如下输出:

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

答案 4 :(得分:1)

$simple = [];

foreach ($stores as $store){
    $simple[] = $store['id'];
}