如何解决这个逻辑?

时间:2016-03-27 15:37:11

标签: php arrays json sorting

我做了一个测试,有这个序列,如下:

$in = [
[ts->'1', data->'dado 1'];
[ts->'2', data->'dado 2'];
[ts->'3', data->'dado 3'];
]

以下步骤:

  1. 过滤器ts> X
  2. 排序ts
  3. 以Json格式输出(这可以使用echo json_encode($ in))
  4. 我该如何解决这些步骤?

    修改

    也许它可以替代解决:

    //Filter ts
    function filtrar($in)
    {
        $x = 1;
        return($in['ts'] > $x);
    }
    //Sort ts
    foreach ($in as $key => $row) {
        $ts[$key]  = $row['ts'];
    }
    array_multisort($ts, SORT_ASC, $in);
    //output into Json
    echo json_encode(array_filter($in, "filtrar"));
    

3 个答案:

答案 0 :(得分:1)

在阅读建议链接后,我得到了一个可能的解决方案:

//Filter ts
function filtrar($in)
{
    $x = 1;
    return($in['ts'] > $x);
}
//Sort ts
foreach ($in as $key => $row) {
    $ts[$key]  = $row['ts'];
}
array_multisort($ts, SORT_ASC, $in);
//output into Json
echo json_encode(array_filter($in, "filtrar"));

在以下链接中:array_filter()array_multisort()

答案 1 :(得分:0)

你尝试过什么?这是一个想法:

$buffer = array();
$in = json_decode($in);
foreach ($in as $row)
{
   if ($row['ts'] > 1)
   {
      $buffer[$row['ts']] = $row;
   }
}

ksort($buffer);
var_dump($buffer);

答案 2 :(得分:0)

玩得开心:)

 $in = [
    ['ts' =>'1', 'data'=>'dado 1'],
    ['ts'=>'2', 'data'=>'dado 2'],
    ['ts'=>'3', 'data'=>'dado 3'],
    ];

    $number = 2;

    $filtered = array_filter($in , function($to_filter) use ($number) {
        if($to_filter['ts'] >= $number)
            return $to_filter;
    });

    print_r($filtered);