dsms21398 2018-10-17 03:33
浏览 8
已采纳

OUTPUT单独从数组中键入1个键

How to make if _from is Alone to _to --- to Select _Alone with the higher ID

Drop else from array

array (
  0 => 
  array (
    'id' => '8',
    '_from' => '2',
    '_to' => '1',
    'date' => '2018-10-15 15:51:07',
    'message' => 'ccccccxxxxx',
    'read' => '0',
    'feedback' => '0',
    'cnt' => '3',
  ),
  1 => 
  array (
    'id' => '6',
    '_from' => '1',
    '_to' => '2',
    'date' => '2018-10-15 15:47:01',
    'message' => 'zzzzzzz1',
    'read' => '1',
    'feedback' => '0',
    'cnt' => '1',
  ),
  • 写回答

1条回答 默认 最新

  • donglan7594 2018-10-19 03:30
    关注

    If you have small arrays, It is not a problem to run the algorithm with complexity O(n2). But for me better is less clear, but faster algorithm with complexity equals to O(2n)

    $array = array(
        array(
            'id'         => 12,
            '_from'      => 1,
            '_to'        => 2
        ),
        array(
            'id'         => 13,
            '_from'      => 4,
            '_to'        => 2
        ),
        array(
            'id'         => 14,
            '_from'      => 2,
            '_to'        => 1
        ),
    );
    $newArray = [];
    foreach ($array as $item) {
        $uniqueRecordKey = $item['_from'].'-'.$item['_to'];
        $oppositeRecordKey = $item['_to'].'-'.$item['_from'];
    
        //If exists record from the opposite and new ID is greater than previous put
        if (isset($newArray[$oppositeRecordKey])) {
            $newArray[$oppositeRecordKey] = $item;
            continue; //Do not append to the end
        }
    
        $newArray[$uniqueRecordKey] = $item;
    }
    
    var_dump($newArray);
    

    https://3v4l.org/0oL2d

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部