2012-04-05 6 views
0

Ich brauche dieses Array suchen:PHP Suche mehrdimensionales Array für Wert, legen Sie dann das Element am Anfang des Array

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

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

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

Und wenn (zum Beispiel) ist das Modell „Civic“, statt dass ‚Auto‘ an Position 0.

So wäre das Ende Array sein wie:

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

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

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

ich einige usort Variationen ausprobiert habe:

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

aber kehrt nur 1

Antwort

1

Meinten Sie:


function sortByModel($a, $b) { 
    if($a["model"] == "Civic") { 
     return 0; 
    } 
    else { 
     return 1; 
    }  
} 
usort($a, 'sortByModel'); 
echo "<pre>"; 
print_r($a); 
0

oder vielleicht ist es das, was Sie wollen (der Ausgang ist als zumindest gewünscht)

foreach($cars as $k => $v){ 
    if ($v['model'] == 'Civic'){ 
     unset($cars[$k]); 
     array_unshift($cars, $v); 
    } 
} 
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; 
     } 
    } 
} 
?> 
0

Sie können dies versuchen:

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'));