繁体   English   中英

从PHP中的关联数组获取列值

[英]Get column values from an associative array in 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',
    )
);

我想要这样的输出:

编辑:

 Array
    ( array('first_Name' => John),
      array('first_Name'=> Sally),
      array('first_Name'=> Jane),  
      array('first_Name'=> Peter)
    );

能做到吗?

您不能这样做,因为数组中不能有重复的键。

这是一个相关的问题: 如何在PHP数组中允许重复的键?

本文介绍了PHP如何在内部存储数组: http : //nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html

编辑后回答:

$arr = array();
foreach($records as $value) {
    $arr[] = array('first_name' => $value['first_name']);
}
print_r($arr);

您可以这样解决您的(编辑)问题:

$new_array = array();
foreach($records as $record)
    $new_array[] = array('first_Name'=>$records['first_name']);

尝试这个

$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',
    )
);

$tmp = array('first_name' => '');
foreach ($records as &$record) {
    $record = array_intersect_key($record, $tmp);
    // or $record = array('first_name' => $record['first_name']);
}
unset($record);

var_dump($records);

如果要在数组中使用数组,则肯定会使用索引键生成它,就像这样

 Array
    ( '0' => array('first_Name' => John),
      '1' => array('first_Name'=> Sally),
      '2' => array('first_Name'=> Jane),  
      '3' => array('first_Name'=> Peter)
    );

试试这个

 foreach($records as $record) {
    $name_array[] = Array('first_Name' =>$record['first_name']);
 }
 print_r($name_array);

您的输出将是

Array
(
    [0] => Array
        (
            [first_Name] => John
        )

    [1] => Array
        (
            [first_Name] => Sally
        )

    [2] => Array
        (
            [first_Name] => Jane
        )

    [3] => Array
        (
            [first_Name] => Peter
        )

)

这是不可能的,因为在关联数组中不能包含同一键的多个元素。

你可以试试这个

$arr_output = array();
foreach($records as $key=>$arr)
{
    $arr_output['id'][] = $arr['id'];
    $arr_output['first_name'][] = $arr['first_name'];
    $arr_output['last_name'][] = $arr['last_name'];
}

print_r($arr_output['first_name']); // display all first names
print_r($arr_output); // display complete output array.

输出:

Array
(
    [id] => Array
        (
            [0] => 2135
            [1] => 3245
            [2] => 5342
            [3] => 5623
        )

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

    [last_name] => Array
        (
            [0] => Doe
            [1] => Smith
            [2] => Jones
            [3] => Doe
        )

) 

演示版

要获得所需的输出,可以使用array_map ,尽管可以使用PHP 5.5中新增的array_column获得类似的输出。

使用array_maphttp://3v4l.org/v8Y8Z ):

<?php

$firstNames = array_map(function($record) {
    return ['first_name' => $record['first_name']];
}, $records);

使用array_columnhttp://3v4l.org/ohnGu ):

$firstNames = array_column($records, 'first_name');

注意: array_column不会使用first_name键创建子array_column

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM