我有一些数据进入一个包含多行和多列的页面。我特别希望将 1 整列放入另一个数组中。
我正在使用 codeigniter 和 php。我页面上的 var dump 显示其原始数组中的数据正常到达。但是,一旦我开始尝试在页面上创建第二个数组,该数组就会返回 0 个结果。
这是原始数组的 var_dump。为了您的理智,我只发布第一个序列。
array(7) { [0]=> object(stdClass)#19 (7) { ["id"]=> string(1) "1"
["serial_number"]=> string(9) "battery 1" ["battery_type"]=> string(4) "Lipo" ["cell_count"]=> string(1) "4" ["capacity"]=> string(4) "16.8" ["date_submitted"]=> string(19) "0000-00-00 00:00:00" ["user_id_submitted"]=> string(0) "" } [1]=>
这是array_column函数
<?php
$serialnumber = array_column($batteryDb, "serial_number");
var_dump($serialnumber);
?>
结果如下:
array(0) { }
最佳答案
好的,var_dump($batteryDb);
显示了这个:
array(7) {
[0] => object(stdClass)#19 (7) { <----- object !!
["id"]=> string(1) "1"
["serial_number"]=> string(9) "battery 1"
["battery_type"]=> string(4) "Lipo"
["cell_count"]=> string(1) "4"
["capacity"]=> string(4) "16.8"
["date_submitted"]=> string(19) "0000-00-00 00:00:00"
["user_id_submitted"]=> string(0) "" }
[1] =>
问题是此数组结构不适用于 PHP5 上的 array_column
。
您有一个对象数组,但该函数需要一个数组数组。
array_column
上的对象数组仅受 PHP7 支持。
引用:https://github.com/php/php-src/blob/PHP-7.0.0/UPGRADING#L626
基本的解决方案是将您的对象变成数组:
array(7) {
[0] => array (7) { <----- array !!
["id"]=> string(1) "1"
您可以使用:
$array = (array) $object;
$array = get_object_vars($object);
- 如果是多维的:
$array = json_decode(json_encode($object), true);
试一试:
$batteryDbArray = json_decode(json_encode($batteryDb), true);
$serial_numbers = array_column($batteryDbArray, 'serial_number');
var_dump($serial_numbers);
关于php - array_column 从包含数据的数组返回 0 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38251750/