0

こんにちは、最初に配列から値を取得するのに助けが必要です私は配列の下から連続した値を取得しましたeg => id:1,2値を取得した後に連続した値が存在しない場合は無視します連続した値の入札間の差を見つけて、すべてを合計します入札値(連続値)??

        $bidperpage = array([0]=>array(['id']=>1,['bid']='10',['page']='5'),
        [1]=>array(['id']=>2,['bid']='15',['page']='5'),
        [2]=>array(['id']=>9,['bid']='20',['page']='2'),
        [3]=>array(['id']=>3,['bid']='30',['page']='7'),
        [4]=>array(['id']=>4,['bid']='40',['page']='7'),
        [5]=>array(['id']=>5,['bid']='50',['page']='9'),
        [6]=>array(['id']=>6,['bid']='60',['page']='4'),
        [7]=>array(['id']=>8,['bid']='70',['page']='4'));



function checkconsecutivevalue($array) {
 $ret  = array();
 $temp = array();
 foreach($array as $val) {
  if(next($array) == ($val + 1))
     $temp[] = $val;
  else
     if(count($temp) > 0) {
        $temp[] = $val;
        $ret[]  = $temp[0].':'.end($temp);
        $temp   = array();
     }
     else
        $ret[] = $val;
   }         


 return $ret;
 } 
4

2 に答える 2

0

他に何もないとしても、配列定義は完全な構文エラーです。そのはず

$bidperpage = array(
    0 => array('id' => 1, 'bid' => '10', 'page' => '5'),
    etc...
);

=>演算子の適切な使用と[]中括弧の欠如に注意してください。

于 2012-08-20T14:35:24.417 に答える
0

私の考えでは、これを行う最も簡単な方法は次を使用することですusort

$bidperpage = array(array('id'=>1,'bid'=>'10','page'=>'5'),
        array('id'=>2,'bid'=>'15','page'=>'5'),
        array('id'=>9,'bid'=>'20','page'=>'2'),
        array('id'=>3,'bid'=>'30','page'=>'7'),
        array('id'=>4,'bid'=>'40','page'=>'7'),
        array('id'=>5,'bid'=>'50','page'=>'9'),
        array('id'=>11,'bid'=>'60','page'=>'q'),
        array('id'=>8,'bid'=>'70','page'=>'4'));

//Sort function
function sortById($a,$b)
{
    if ($a['id'] === $b['id'])
    {
        return 0;
    }
    return ($a['id'] > $b['id'] ? 1 : -1);
}
usort($bidperpage,'sortById');

詳細:ドキュメントを参照して
ください。覚えておいてください。キーidが常に押されていると仮定しました。そうでない場合は、コールバック関数に追加のチェックを追加することをお勧めします。

function sortById($a,$b)
{
    if (!isset($a['id']) && !isset($b['id']))
    {
        return 0;
    }
    if (!isset($a['id']))
    {
        return 1;//move to end of array
    }
    if (!isset($b['id']))
    {
        return -1;
    }
    if ($a['id'] === $b['id'])
    {
        return 0;
    }
    return ($a['id'] > $b['id'] ? 1 : -1);
}

この関数はそれほど冗長である必要はありませんが、あまり試していない印象があるので、それはあなたに任せます。

于 2012-08-20T15:19:07.483 に答える