在php中从关联数组获取列值

在php中从关联数组获取列值,php,associative-array,Php,Associative Array,我有一个表单数组: $records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), array( 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith',

我有一个表单数组:

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

) 

这是可以实现的吗?

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

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

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

这是一个相关的问题:

本文解释PHP如何在内部存储数组:

编辑后回答:

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

无法执行此操作,因为数组中不能有重复的键

这是一个相关的问题:

本文解释PHP如何在内部存储数组:

编辑后回答:

$arr = array();
foreach($records as $value) {
    $arr[] = array('first_name' => $value['first_name']);
}
print_r($arr);
你可以试试这个

$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
    ( array('first_Name' => John),
      array('first_Name'=> Sally),
      array('first_Name'=> Jane),  
      array('first_Name'=> Peter)
    );
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
        )

) 

你可以试试这个

$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
    ( array('first_Name' => John),
      array('first_Name'=> Sally),
      array('first_Name'=> Jane),  
      array('first_Name'=> Peter)
    );
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
        )

) 

试试这个

$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);
试试这个

$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);
您可以实现以下(编辑的)问题:

$new_array = array();
foreach($records as $record)
    $new_array[] = array('first_Name'=>$records['first_name']);
您可以实现以下(编辑的)问题:

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

如果你想在数组中用数组的方式,它肯定会用索引键生成,如下所示

 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
        )

)

如果你想在数组中用数组的方式,它肯定会用索引键生成,如下所示

 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
        )

)

要获得所需的输出,可以使用
array\u-map
,不过可以使用php5.5中新增的
array\u-column
获得类似的输出

使用
数组映射
():

注意:
array\u column
不使用
first\u name
键生成子数组。

要获得所需的输出,可以使用
array\u map
,尽管可以使用php5.5中新增的
array\u column
获得类似的输出

使用
数组映射
():


注意:
array\u column
不使用
first\u name
键生成子数组。

如何将
first\u name
作为数组的多个索引?具有相同键的,不可能的关联数组不能持有相同的索引键如何将
first\u name
作为数组的多个索引?具有相同键,不可能一个关联数组不能连续地保存相同的索引键?这就构成了一个答案?@nl-x和Amal-我不是说答案是错的。我指的是一句话被贴出来作为答案。它很可能被张贴为一个comment@asprin例如我知道你是那个意思。那么,为什么不呢?@nl-x@asprin:根据你的链接,这是一个答案。(见你链接中的第8页)它说这应该是一个答案,不应该被报告为NaA(不是答案)严重吗?这就构成了一个答案?@nl-x和Amal-我不是说答案是错的。我指的是一句话被贴出来作为答案。它很可能被张贴为一个comment@asprin例如我知道你是那个意思。那么,为什么不呢?@nl-x@asprin:根据你的链接,这是一个答案。(见你链接的第8页)它说这应该是一个答案,不应该被报告为NaA(不是答案)。这不是OP的内容askin@user2129794正如我对您的问题所作的评论,相同的密钥在数组中是不可能的。你可以像我回答的那样使用它。这不是OP的意思askin@user2129794正如我对您的问题所作的评论,相同的密钥在数组中是不可能的。你可以像我回答的那样使用它。或者只是:
array\u walk($records,function($v,$k)use(&$arr){$arr[]=['first\u name'=>$v['first\u name']];})这与nl-x的答案有什么不同?加上你在nl-x发布他的文章后编辑了你的文章answer@asprin可能我的打字速度比nl-x慢。当我打字的时候,他回答说。@asprin:这并不是说有上千种不同的方法来实现这一点:-)@asprin为了你的幸福。现在不同了。+1。或者只是:
array\u walk($records,function($v,$k)use(&$arr){$arr[]=['first\u name'=>$v['first\u name']];})这与nl-x的答案有什么不同?加上你在nl-x发布他的文章后编辑了你的文章answer@asprin可能我的打字速度比nl-x慢。当我打字的时候,他回答说。@asprin:这并不是说有上千种不同的方法来实现这一点:-)@asprin为了你的幸福。现在不同了。这与和是一样的。不确定是否有另一个相同的内容将是有益的。这是相同的和。不确定是否有另一个相同的内容将是有益的。