0

集合体データを返す大きな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」に続く番号を知る必要があるため、最初にその単語を含むすべてのキーを取得する必要があります。

4

3 に答える 3

2
$tmp = array();
foreach ($array as $sub)
    foreach ($sub as $k => $v)
        if (substr($k, 0, 12) == 'sessionCount')
            $tmp[$k] = $v;
于 2013-03-26T16:23:04.250 に答える
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);
于 2013-03-26T16:20:58.463 に答える
0

アレイを変更せずにこれを行うことができるのは、ブルートフォースだけです。「sessionCount[0-999]」を試してください。

別のアプローチは、次のように配列キーでstrcmp()を使用することです。

foreach($array as $key => $value) 
    if(!strcmp($key,"sessionCount")) 
        dosomething($key,$value);

または、配列を1回ループして、次のように再構築します。

array() {
  ["sessionCount"] => array() {
      [84] => "",
      [1] => "",
  }
}

..その後、必要なすべての鍵を見つけるには、公園を散歩する必要があります。;)

于 2013-03-26T16:21:55.247 に答える