PHP mysql只选择具有最高值的行(随机字符数字顺序)

时间:2014-11-19 15:20:30

标签: php

示例:

thisisline>and>1
thisisanother>line>something>13
just>another>line>143
short>11

我的数据库中有关于列' profile'的这类数据。我需要的是从数据库中选择列user_name和profile,其中在'>'

的最后一次出现之后,个人资料具有5个最高值

3 个答案:

答案 0 :(得分:1)

首先,你必须从你的行中提取数字。然后,订购它们并拿走你想要的那些。

$lines = "thisisline>and>1
thisisanother>line>something>13
just>another>line>143
short>11";

$tmp = explode("\n", $lines); //separate lines

$numbers = array();

foreach($tmp as $line)
{
    $numbers[] = substr($line, strrpos($line, ">") + 1); //extract number
}

rsort($numbers); //order your results

$count = 2; //define the count of results

$result = array_slice($numbers, 0, $count); //just take the ones which you want

var_dump($result);

你会把你的结果作为一个数组。

php沙箱中的工作示例here

答案 1 :(得分:0)

$theNumber = substr($string, strrpos($string, ">")+1);

这应该为您提供每行的编号。然后,您只需比较数字。

答案 2 :(得分:0)

这样做。 将所有行放入数组,解析它们,将最后一个值存储在数组中,对其进行排序,然后执行所需操作。

$lines = 'thisisline>and>1
thisisanother>line>something>13
just>another>line>143
short>11';

define('NUM_TO_GET', 2); //Get the two highest. Rewrite it to 5!
$array = explode("\n", $lines);
$results = array();
foreach ($array as $line) {
    $tmp = explode('>', $line);
    $results [] = $tmp[count($tmp) - 1];
}
rsort($results);
for ($i = 0; $i < NUM_TO_GET; $i++) {
    if (isset($results[$i])) {
        echo $results[$i] . "<br />";
    } else {
        break;
    }
}