php 通过整数而不是关联键名称访问数组列

xxhby3vn  于 2022-12-17  发布在  PHP
关注(0)|答案(3)|浏览(99)

如何应用array_column()来始终获取数组的第一列,而不是按名称获取列?
我正在寻找这样的东西是:

array_column($array,[0])

而不是:

array_column($array,"key");
thigvfpy

thigvfpy1#

试试看

array_column($array, array_shift(array_keys($array)));

Return first key of associative array in PHP开始
希望能有所帮助!:)

5tmbdcev

5tmbdcev2#

你不能用array_column函数来做这件事,除非你事先确定每个数组的第一个元素的键是什么。
您需要使用foreach()执行此操作,并使用reset()获取第一个元素。

e5nqia27

e5nqia273#

虽然array_column()允许使用整数来定位列,但它必须是一个现有的整数键,否则,需要确定第一个子数组的第一个键,以动态访问该列。
代码:(Demo

$array = [
    ["foo" => "bar1", "hey" => "now"],
    ["foo" => "bar2", "hey" => "what"],
    [0 => "zero", 1 => "one"]
];

var_export(array_column($array, 'foo'));  // get the column by name
echo "\n---\n";
var_export(array_column($array, 0));  // don't need to be a string
echo "\n---\n";
var_export(array_column($array, key(current($array))));  // access the first subarray, access its key
echo "\n---\n";
var_export(array_column($array, array_shift(array_keys($array))));  // this generates a Notice, and damages the array

输出:

array (
  0 => 'bar1',
  1 => 'bar2',
)
---
array (
  0 => 'zero',
)
---
array (
  0 => 'bar1',
  1 => 'bar2',
)
---

Notice: Only variables should be passed by reference in /in/hH79U on line 14
array (
  0 => 'zero',
)

如果使用循环或函数迭代器,则可以调用current()reset()来访问每行的第一个元素,但是如果这些第一个元素具有不同的键,则从技术上讲,这不是一列数据,请理解我在demo中的意思--您无意中从不同的键获取了值。

var_export(array_map('current', $array));
// ['bar1', 'bar2', 'zero']

相关问题