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