Php 从explode中获得field1中的前两名(切片?),并在field2中计数
使用PHP,我希望从我的db(Mysql 5.x)中提取field1中具有field2中最多值的2个值。这是给Joomla/JomSocial的,如果有必要的话,但是非常感谢您的回复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 我已经试过了,但
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;