0

この配列を検索する必要があります。

cars - 
      [0] -make : Ford
          -model: Escort
          -year: 1991

      [1] -make: Honda
          -model: Civic
          -year: 1996

      [2] -make: Vauxhall 
          -model: Astra
          -year: 1972

そして、(例えば) モデルが "Civic" の場合、その 'car' を位置 0 に配置します。

したがって、最後の配列は次のようになります。

cars - 
      [0] -make: Honda
          -model: Civic
          -year: 1996

      [1] -make : Ford
          -model: Escort
          -year: 1991        

      [2] -make: Vauxhall 
          -model: Astra
          -year: 1972

私はいくつかの usort バリエーションを試しました:

  function typeSort($a, $b)
    {
        if ($a['model'] == 'Civic' )
        {
            return 0;
        }
        return ($a['model'] < $b['model']) ? -1 : 1;
    }

しかし、これは戻ってきたばかりです1

4

4 に答える 4

1

つまり:


function sortByModel($a, $b) {
    if($a["model"] == "Civic") {
        return 0;
    }
    else {
        return 1;
    }       
}
usort($a, 'sortByModel');
echo "<pre>";
print_r($a);
于 2012-04-05T11:26:11.267 に答える
0
<?php
$cars = array(
    0=>array(
        'make' => 'Ford'
        ,'model' => 'Escort'
        ,'year' => 1991
    )
    ,1=>array(
        'make' => 'Honda'
        ,'model' => 'Civic'
        ,'year' => 1996
    )
    ,2=>array(
        'make' => 'Vauxhall'
        ,'model' => 'Astra'
        ,'year' => 1972
    )
);

var_dump("BEFORE",$cars);
var_dump("AFTER",array_typesort($cars));

function array_typesort( $arr, $model='Civic' ) {
    foreach ( $arr as $k => $v ) {
        if ( $arr[$k]['model'] == $model ) {
            $out = array_splice( $arr, $k, 1 );
            array_unshift($arr, $out[0]);
            return $arr;
        }
    }
}
?>
于 2012-04-05T11:32:30.870 に答える
0

これを試すことができます:

function typesort($arr, $val)
{

foreach($arr as $key=>$value)
{
    if(in_array($val,$value))
    {
        $tempArr = $value;
        unset($arr[$key]);
        break;
    }
}
array_unshift($arr,$tempArr);
return $arr;
}

print_r(typesort($data,'bbb'));
于 2012-04-05T11:42:55.577 に答える
0

または多分これはあなたが望むものです(出力は少なくとも望ましいものです)

foreach($cars as $k => $v){
    if ($v['model'] == 'Civic'){
        unset($cars[$k]);
        array_unshift($cars, $v);
    }
}
于 2012-04-05T11:31:57.917 に答える