Php 从explode中获得field1中的前两名(切片?),并在field2中计数

Php 从explode中获得field1中的前两名(切片?),并在field2中计数,php,explode,slice,Php,Explode,Slice,使用PHP,我希望从我的db(Mysql 5.x)中提取field1中具有field2中最多值的2个值。这是给Joomla/JomSocial的,如果有必要的话,但是非常感谢您的回复 myTable field1 | field2 ------------------------ 47 | 46,43,22,88,99,12 22 | 12,99 88 | 77 12 | 99,22,84,5 我已经试过了,但

使用PHP,我希望从我的db(Mysql 5.x)中提取field1中具有field2中最多值的2个值。这是给Joomla/JomSocial的,如果有必要的话,但是非常感谢您的回复

myTable

field1    |   field2
------------------------
47       |    46,43,22,88,99,12
22       |    12,99
88       |    77
12       |    99,22,84,5
我已经试过了,但什么也没发生:

The out put of the following query should be
Top Member ID = 47
Top Member ID = 12
$query='从myTable中选择*;
$db->setQuery($query);
$row=$db->loadObjectList();
$counted=数组计数值($row[field2]);
阿索特(已计);
$top\u two=数组\u切片($counted,0,2);
foreach($top_2作为$data)
{
echo“Top Member ID=”.$data.“
”; }

非常感谢您

您可以直接使用SQL完成此操作:

    $query  =   'SELECT * FROM myTable;

    $db->setQuery( $query );
    $row = $db->loadObjectList();        
    $counted = array_count_values($row[field2]);
    arsort($counted);
    $top_two = array_slice($counted, 0, 2);
    foreach ( $top_two as $data )
        {
            echo "Top Member ID = " . $data ."<BR />";
        } 

返回的2行将是您想要的。

哇,你们真是太快了。。。。我觉得我喜欢这个论坛。现在将它插入到我的脚本中并试用。。。非常感谢。ctcherry,计算字段2中的元素数还是字符串长度?啊。。。计算逗号。好主意。@user1006292:它正在计算逗号的数目。取整个字符串的长度(例如,
1,2,3,4=7
),然后在将逗号替换为“”时减去字符串的长度(例如,`1234=4')。。。所以这会给你3。3不是元素的数量,但它是一致的,所以按顺序排序就可以了。@ctcherry哇,太好了,我真的想开了,想找到一个更复杂的答案:)干杯
SELECT field1, field2, LENGTH(field2)-LENGTH(REPLACE(field2,',','')) AS num FROM myTABLE ORDER BY num DESC LIMIT 2;