我有一个大型SQL查询,它返回聚合数据。
我返回的数组是这样的:
array(37) { // I get 37 arrays returned
[0] => array(10) {
["groupId"] => string(1) "3" // the first param is just an id
["sessionCount84"] => string(1) "0"
["sessionCount1"] => string(1) "1"
} ...
每个子数组都包含多个带有'sessionCount'字样的键,后面跟着一个数字,可能有很多。
有没有办法获取包含单词'sessionCount [someNumber]“的键的所有值?
我在php中尝试了array_keys函数,但这需要一个精确的单词匹配,这意味着我需要知道键中'sessionCount'后面的数字,所以我需要先得到包含该单词的所有键不知。
答案 0 :(得分:2)
$tmp = array();
foreach ($array as $sub)
foreach ($sub as $k => $v)
if (substr($k, 0, 12) == 'sessionCount')
$tmp[$k] = $v;
答案 1 :(得分:1)
也许这样的事情会有所帮助。
$myArray = array(37) { [0]=> // I get 37 arrays returned
array(10) { ["groupId"]=> string(1) "3" // the first param is just an id
["sessionCount84"]=> string(1) "0"
["sessionCount1"]=> string(1) "1" } ...
$sessions = array();
array_map(function($session) use (&$sessions) {
foreach ($session as $key => $value) {
if ($key starts with "sessionCount") // I'm going to leave that up to you
$sessions[$key] = $value;
}
}, $myArray);
答案 2 :(得分:0)
如果不改变阵列,你只能通过蛮力来做到这一点。尝试“sessionCount [0-999]”..
另一种方法是在数组键上使用strcmp(),如下所示:
foreach($array as $key => $value)
if(!strcmp($key,"sessionCount"))
dosomething($key,$value);
或循环遍历数组并将其重组为如下所示:
array() {
["sessionCount"] => array() {
[84] => "",
[1] => "",
}
}
..之后找到你需要的所有钥匙应该是在公园散步。 ;)