php数组键包含一个单词

时间:2013-03-26 16:16:50

标签: php arrays

我有一个大型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'后面的数字,所以我需要先得到包含该单词的所有键不知。

3 个答案:

答案 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] => "",
  }
}

..之后找到你需要的所有钥匙应该是在公园散步。 ;)