繁体   English   中英

关联对象数组中的胶印数组键

[英]Offset printing array keys in an associative object array

我有一个查询,该查询从数据库返回数据并将数据存储在名为$array

使用print_r($array)我收到如下数据:

Array
(
    [0] => stdClass Object
        (
            [Item1] => 1
            [Item2] => 1
            [Item3] => 1
            [Item4] => 'Az'
            [Item5] => 222
            [Item6] => 223
            [Item7] => 21
            [Item8] => 22
        )
) 

我发现我可以使用以下命令将键Item1返回到Item8

foreach ($array[0] as $key => $a){
  echo '<pre>', $key, '</pre>';
}

但是我只想从Item4返回到数组的末尾。 (删除前3个项目)

请注意,查询有时会返回多个行,即$array[0]$array[1]但如果有结果,则$array[0]将始终存在。 我只需要从数组中获取键,因为我想将它们用作显示它们的表中的列标题。

我更喜欢foreach()情况,因为我只想输出尽可能多的列。

我尝试查看array_slice()但似乎无法正常工作,我的努力如下所示:

$sliced =  array_slice($prices[0], 3, $preserve_keys = true);
foreach ($sliced as $key => $value){
  echo '<pre>'.$key.'</pre>';
}

正如您提到的“我希望有一个foreach解决方案...”一样 ,您可以简单地增加一个计数器,直到计数器达到所需的值才输出任何内容:

$count = 0
foreach ($array[0] as $key => $a){
  $count++;
  if($count > 3){
     echo '<pre>', $key, '</pre>';
  }
}

将您的stdClass对象转换为array并使用array_slice

$neededItems = array_slice((array)$array[0], 4, null, true);

问题的解决方案比您要解决的问题要深。

如果数据库查询返回的索引为1..10的数组,但是您只想显示索引4..10中的数据, 那么您真正需要的是更改数据库查询以仅返回这些列4..10。

因此,基本上不执行此查询:

SELECT * FROM table1

您需要执行以下查询:

SELECT col4, col5, col6, col7, col8, col9, col10
FROM table1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM