MYSQL PHP数组分组

MYSQL PHP数组分组,php,mysql,Php,Mysql,我很难从概念上理解这一点。这还是个新鲜事。基本上,我从我的数据库中返回: array (size=456) 0 => object(stdClass)[358] public 'id' => string '2432' (length=4) public 'symbol' => string '.AMLP' (length=14) public 'last' => string '0.01' (length=4)

我很难从概念上理解这一点。这还是个新鲜事。基本上,我从我的数据库中返回:

array (size=456)
  0 => 
    object(stdClass)[358]
      public 'id' => string '2432' (length=4)
      public 'symbol' => string '.AMLP' (length=14)
      public 'last' => string '0.01' (length=4)
      public 'volume' => string '3690' (length=4)
      public 'the_date' => string '2019-09-13' (length=10)
      public 'the_screener' => string '1' (length=1)
      public 'notes' => string 'notes here' (length=149)
  1 => 
    object(stdClass)[726]
      public 'id' => string '2417' (length=4)
      public 'symbol' => string '.ARCC' (length=14)
      public 'last' => string '2.25' (length=4)
      public 'volume' => string '1633' (length=4)
      public 'the_date' => string '2019-09-13' (length=10)
      public 'the_screener' => string '1' (length=1)
      public 'notes' => string 'notes' (length=60)
  2 => 
    object(stdClass)[726]
      public 'id' => string '2447' (length=4)
      public 'symbol' => string '.ARCC' (length=14)
      public 'last' => string '2.25' (length=4)
      public 'volume' => string '1633' (length=4)
      public 'the_date' => string '2019-09-12' (length=10)
      public 'the_screener' => string '1' (length=1)
      public 'notes' => string 'notes here 3' (length=60)
  3 => 
我试图用PHP创建一个对象/数组,我可以用它来显示这些项目,如

AMLP 1 found on dates 2019-09-13
ARCC 2 found on dates 2019-09-13, 2019-09-12
最后,我会在一个表中显示这些,但从概念上来说,这就是我要做的

我曾尝试在我的foreach中创建一个数组,我用它在表中显示这些信息,但我一直在考虑,最好只使用相同的查询数据并将其单独分解

所以我想创建一个数组,如:

    Array
(
    [1] => Array
        (
            [id] => 1
            [symbol] => ARCC 
            [dates] => Array
                (
                    [3] => Array
                        (
                            2019-09-13
                            2019-09-12
                        )

                )

        )

)

假设您的数组是
$arrDates
。如果要访问对象属性之类的属性

$arrFinal = [];
foreach ($arrDates as $intKey => $obj){
    $strSymbol = getSubSymbol($obj->symbol);
    if(!isset($arrFinal[$strSymbol])) {
        $arrFinal[$strSymbol] = [ 'id' => $obj->id, 'symbol' => $obj->symbol];
    }

    $arrFinal[$strSymbol]['dates'][] = $obj->the_date;
 }

// Now loop throuh arrFinal and do print the statements you want.
foreach($arrFinal as $strSubSymbol => $arrData){
    echo $strSubSymbol . ' '. count($arrData['dates']) . ' found on dates ' . implode(',', $arrData['dates']). PHP_EOL;
}
函数以获取所需的符号子部分

function getSubSymbol($symbol_original){
    $symbol = preg_split('/(?=\d)/', $symbol_original, 2); //get everything up until first number or the date in the string in this case.
    $symbol_here = substr($symbol[0], 1);
    return $symbol_here;
}

假设您的数组是
$arrDates
。如果要访问对象属性之类的属性

$arrFinal = [];
foreach ($arrDates as $intKey => $obj){
    $strSymbol = getSubSymbol($obj->symbol);
    if(!isset($arrFinal[$strSymbol])) {
        $arrFinal[$strSymbol] = [ 'id' => $obj->id, 'symbol' => $obj->symbol];
    }

    $arrFinal[$strSymbol]['dates'][] = $obj->the_date;
 }

// Now loop throuh arrFinal and do print the statements you want.
foreach($arrFinal as $strSubSymbol => $arrData){
    echo $strSubSymbol . ' '. count($arrData['dates']) . ' found on dates ' . implode(',', $arrData['dates']). PHP_EOL;
}
函数以获取所需的符号子部分

function getSubSymbol($symbol_original){
    $symbol = preg_split('/(?=\d)/', $symbol_original, 2); //get everything up until first number or the date in the string in this case.
    $symbol_here = substr($symbol[0], 1);
    return $symbol_here;
}

Hi Jitendra的可能副本。我还没能完成完整的检查,但现在这是返回:
Array([]=>Array([id]=>[symbol]=>[dates]=>Array([0]=>[1]=>[2]=>[3]=>[4] =>                      [5] =>                      [6] =>                      [7] =>                      [8]=>
查询结果也会出现在$products中。我希望在您有对象的情况下,尝试我提到的第二个,我想我忘记了一个重要部分,但我认为我们在这方面做得对。顺便感谢您的帮助。返回的符号如下:AMLP191101C10或类似于此的ARCC21015C17注意e符号是第一个数字之前的第一个字母。我想我需要以某种方式添加它,这样才能起作用,对吗?它吐出数组,但没有匹配项。你的意思是,这里我们比较的是
AMLP
,但它可以是
AMLP191101C10
AMLP1913433C39
,是吗?是的,只是字符串中的第一个数字。是的,上面的推断是正确的。输出仍然没有像以前那样显示任何匹配项。我想是因为我在脚本中读到的符号。你能解释一下上面的索引吗。也许我不明白你的意思。嗨,吉坦德拉。我还没有完全理解,但现在我s返回:
Array([]=>Array([id]=>[symbol]=>[dates]=>Array([0]=>[1]=>[2]=>[3]=>[4]=>[5]=>[6] =>                      [7] =>                      [8]=>
查询结果也会出现在$products中。我希望在您有对象的情况下,尝试我提到的第二个,我想我忘记了一个重要部分,但我认为我们在这方面做得对。顺便感谢您的帮助。返回的符号如下:AMLP191101C10或类似于此的ARCC21015C17注意e符号是第一个数字之前的第一个字母。我想我需要以某种方式添加它,这样才能起作用,对吗?它吐出数组,但没有匹配项。你的意思是,这里我们比较的是
AMLP
,但它可以是
AMLP191101C10
AMLP1913433C39
,是吗?是的,只是字符串中的第一个数字。是的,上面的外推是正确的。输出仍然没有像以前那样显示任何匹配项。我想是因为我在脚本中读取的符号。你能解释一下上面的索引吗。也许我不明白你的意思。