偏移打印关联对象数组中的数组键

时间:2014-07-16 14:03:05

标签: php arrays

我有一个从数据库返回数据的查询,并将数据存储在名为$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>';
}

3 个答案:

答案 0 :(得分:1)

当你提到&#34;我更喜欢foreach解决方案......&#34; 时,你可以简单地增加一个计数器,并且在计数器达到所需值之前不输出任何内容:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您的问题的解决方案比您尝试解决问题的方式更深入。

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

所以基本上不是执行这个查询:

SELECT * FROM table1

您需要执行以下查询:

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