从mysql数据库中提取一些数据并将其保存到变量后,我想知道是否可以“查询”变量而不是对数据库执行另一个请求?我意识到我需要根据键和值来搜索一个对象数组。所以这里是我所拥有的一个例子。在对象数组中搜索特定键值对
<?php
[{"customer":1,"item":1,"bought_at":"2016-12-15 11:41:11"},
{"customer":2,"item":1,"bought_at":"2016-12-15 11:43:21"},
{"customer":3,"item":1,"bought_at":"2016-12-16 13:31:11"},
{"customer":1,"item":2,"bought_at":"2016-12-16 12:12:21"},
{"customer":1,"item":3,"bought_at":"2016-12-17 15:13:58"}]
?>
因此,可以说我需要根据物品编号和日期(但不是时间)搜索物品时购买物品。下一步将返回结果作为另一个对象数组。因此,如果我要搜索2016-12-15购买的商品1,它会返回。
[{"customer":1,"item":1,"bought_at":"2016-12-15 11:41:11"},
{"customer":2,"item":1,"bought_at":"2016-12-15 11:41:21"},]
这可能吗?如果是的话,我会怎么做呢? Regards
编辑:我最初问这个问题的原因是因为我有一个查询内嵌入的foreach循环困扰着我。这是一段代码,在后端构建一个json表,将信息传递到前端以绘制谷歌折线图。此外,我在原始问题中稍微更改了数据,以便更易于阅读。它也建在Laravel。完整的代码非常大,所以我只是发布嵌套的foreach循环。查询在第二个循环中,并被赋予变量$ activations。
foreach ($timeRange as $time){
$temp = array();
$timeTwentyFour = date("G", strtotime($time));
$temp[] = array('v' => "Date(01,01,2000,$timeTwentyFour)");
foreach($data as $row){
$count = 0;
$activations = DB::table('customer_display')->where('display_id',$row->id)->where(DB::raw('DATE(created_at)'),$day)->get();
foreach($activations as $activation){
$timestamp = $activation->created_at;
$activationTime = explode(" ", $timestamp)[1];
if (strtotime($activationTime) >= strtotime($time) && strtotime($activationTime) < strtotime($time) + 3600){
$count++;
};
}
$temp[] = array('v' => (float) $count);
//The custom tooltip
$temp[] = array('v' => $time . ' ' . $row->location . '. ' . $count . ($count == 1 ? ' Activation' : ' Activations'));
}
$rows[] = array('c' => $temp);
}
谢谢你,虽然我没有在数组是一个对象里面的时候意识到这一点。所以它实际上是对象 - >数组 - >对象 – Dalek