Php 数组\从包含数据的数组返回0结果的列

Php 数组\从包含数据的数组返回0结果的列,php,mysql,arrays,codeigniter,Php,Mysql,Arrays,Codeigniter,我有一些数据进入一个包含多行和多列的页面。我特别希望得到一整列并将其放入另一个数组中 我正在使用codeigniter和php。我页面上的var dump显示原始数组中的数据刚刚到达。但一旦我开始尝试在页面上创建第二个数组,该数组将返回0个结果 这是原始数组的var_转储。为了你的理智,我只发布第一个序列 数组(7){[0]=>object(stdClass)#19(7){[“id”]=>string(1)“1” [“序列号”]=>字符串(9)“电池1”[“电池类型”]=>字符串(4) “Lip

我有一些数据进入一个包含多行和多列的页面。我特别希望得到一整列并将其放入另一个数组中

我正在使用codeigniter和php。我页面上的var dump显示原始数组中的数据刚刚到达。但一旦我开始尝试在页面上创建第二个数组,该数组将返回0个结果

这是原始数组的var_转储。为了你的理智,我只发布第一个序列

数组(7){[0]=>object(stdClass)#19(7){[“id”]=>string(1)“1”
[“序列号”]=>字符串(9)“电池1”[“电池类型”]=>字符串(4) “Lipo”[“单元计数”]=>字符串(1)“4”[“容量”]=>字符串(4)“16.8” [“提交日期”]=>字符串(19)“0000-00-00:00:00” [“用户id\u已提交”]=>string(0)”}[1]=>

下面是数组\u列函数

<?php 
    $serialnumber = array_column($batteryDb, "serial_number");
    var_dump($serialnumber);
?>
好的,
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] =>
您可以使用以下方法完成此操作:

  • $array=(array)$object;
  • $array=get\u object\u 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);
好的,
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] =>
您可以使用以下方法完成此操作:

  • $array=(array)$object;
  • $array=get\u object\u 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);
我认为在7.0中只添加了对对象数组的支持,所以您可以尝试升级PHP或使用其他方法

尝试:

还有其他更糟糕的解决方案,例如使用(())或迭代数组,使用或强制转换将
stdClass
转换为
array
对象,但我认为这些会增加不必要的开销,而且不太明显:

$serial_numbers = array_column(json_decode(json_encode($batteryDb), true), 'serial_number'));
我认为在7.0中只添加了对对象数组的支持,所以您可以尝试升级PHP或使用其他方法

尝试:

还有其他更糟糕的解决方案,例如使用(())或迭代数组,使用或强制转换将
stdClass
转换为
array
对象,但我认为这些会增加不必要的开销,而且不太明显:

$serial_numbers = array_column(json_decode(json_encode($batteryDb), true), 'serial_number'));

嗯,似乎
$batteryDb
的结构不正确。它必须是一个数组数组。您能添加
var\u dump($batteryDb)的输出吗
到您的原始帖子-可能只有两项。@JustinSellers编辑您的OP以包含示例数组数据。我刚刚为您更新了它。看来
$batteryDb
的结构不正确。它必须是一个数组。您是否愿意添加
var\u dump($batteryDb)的输出
到您的原始帖子-可能只有两个项目。@JustinSellers编辑您的OP以包含示例数组数据。我刚刚为您更新了它。好的,所以我尝试了一下。它呈现了这个数组(7){[0]=>string(9)“battery 1”[1]=>string(9)“battery 2”[2]=>string(9)“battery 3”[3]=>string(9)“battery 5”[4]=>string(9)“battery 6”[5]=>string(9)“battery 4”[6]=>string(9)“battery 7”}现在来找出如何将它们放入下拉列表中。哈哈,所以我尝试了一下。它呈现了这个数组(7){[0]=>string(9)“battery 1”[1]=>string(9)“battery 2”[2]=>string(9)“battery 3”[3]=>string(9)“battery 5”[4]=>string(9)“battery 6”[5]=>string(9)“battery 4”[6]=>string(9)“battery 7”}现在来看看如何把它们放到下拉列表中。哈哈