我有一个查询,从数据库返回数据,并将数据存储在一个名为$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>';
}
你的问题的解决方案比你试图解决它更深刻。
如果DB查询返回一个索引为1的数组…你只需要显示索引4的数据。10 那么你真正需要的是改变DB查询,只返回这些列4..10.
所以基本上不是执行这个查询:
SELECT * FROM table1
你需要执行这样的查询:
SELECT col4, col5, col6, col7, col8, col9, col10
FROM table1
将stdClass
对象转换为数组并使用array_slice
。
$neededItems = array_slice((array)$array[0], 4, null, true);
正如您提到的"我更喜欢foreach解决方案…",您可以简单地增加计数器,并且在计数器达到所需值之前不输出任何内容:
$count = 0
foreach ($array[0] as $key => $a){
$count++;
if($count > 3){
echo '<pre>', $key, '</pre>';
}
}