PHP array_column 多个键相同的顺序?

PHP array_column multiple keys same order?

我想知道 array_column 是否保持数组元素的顺序,所以当我在同一个数组中调用该函数两次时,我可以相信结果数组会匹配。我需要以这种方式工作,因为在代码中我必须只对特定数据(其中一个键,在示例中为 id)进行许多操作,毕竟,使用它们(在示例中为 id 和 qty)来插入数据库。

示例:

QUERY: SELECT id, qty FROM items ...
CONVERTED INTO ASSOCIATIVE ARRAY:
$array = [
  ['id' => 1, 'qty' = 2],
  ['id' => 2, 'qty' = 4]
];

$itemsIds = array_column($array, 'id');
$itemsQty = array_column($array, 'qty'); 

我可以吗?:

for($i = 0; $i < count($array); $i++) {
  echo $itemsIds[$i] . $itemsQty[$i];
}

而且我总能得到每个项目的正确数据?

如果您通过 SQL 查询获得所需的所有值并使用类似以下内容打印它会怎样:

$arrayLength = count($array); // Better optimization than do it in every loop
for($i = 0; $i < $arrayLength; $i++) {
  echo $array[$i]['id'] . $array[$i]['qty'];
}

这将确保所有匹配,并且它们具有相同的行数。

由于数据库结果是基于行的(通常),每一列都会有一些值(即使它是NULL)。所以除非你以某种方式弄乱了结果,否则你应该是安全的。我在我的一些代码中做了几乎相同的事情。

从您的代码来看,您似乎希望在使用 array_column 两次后正确保留与其值相对应的键。

但是对于您来说,您可以像这样使用 array_column 一次获得此信息:

$items = array_column($array, 'qty', 'id')

现在你得到一个关联数组,其中键是每行 id,值是每行数量。

第三个参数array_column的含义是

The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name.

您可以从文档中找到更多解释和示例:http://php.net/manual/en/function.array-column.php