[英]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.