1

タイムスタンプ「1357894278」で役職を並べ替えたい

<?php
foreach( $jobs as &$job )
{
    $cj_date[] =  array( strtotime($job->date) => array( $job->title ));
}

foreach ($results['results'] as $result)
{
    $in_date[] = array ( strtotime($result['date']) => array ($result['jobtitle']) );
}

$ans[] = array_merge($cj_date,$in_date);

foreach($ans as $a)  
{
    ksort($a);
    print_r($a);
}
?>

このスクリプトを実行すると、次のような出力が得られました。

Array( [0] => Array
              ( [1352796106] => Array 
                                ( [0] => JobTitle_1 )
              )
       [1] => Array
              ( [1352745201] => Array 
                                ( [0] => JobTitle_2 )
              )
       [2] => Array
              ( [1357894278] => Array 
                                ( [0] => JobTitle_3 )
              )
      )

1352796106、1352745201、1357894278で役職を並べ替える方法 ありがとう!助けを待つ

4

2 に答える 2

1

これを試して:

function compare($a, $b) {
    $ak = array_keys($a);
    $bk = array_keys($b);
    return ($ak[0] < $bk[0]) ? -1 : 1;
}

usort($ans, "compare");
var_dump($ans);

usortカスタム比較関数で並べ替えます。

于 2012-11-13T07:07:28.310 に答える
1

私はしばらく前に同様の問題を抱えていました。私ははるかに複雑な構造を持っていました。「マップ」として別の配列を作成することになり、それをソート/インデックス付けに使用しました。

新しいマップ配列は非常に単純な構造で、他の構造に関する必要な情報のみが含まれており、インデックスをすばやく作成し、ソートするのに十分な情報だけが含まれていました。

他の解決策があるかもしれないと確信していますが、これは私にとってはうまくいきました。なぜなら、その余分なマップ構造がなければ、反復するのにより多くの費用がかかる非常に大きな複雑な構造を持っていたからです。時間とコストを計算し、複雑さとデータ型のサイズに応じてコストがかかるかどうかを判断するのは、すべてあなた次第です。

于 2012-11-13T07:10:12.447 に答える