webForumDet fria alternativet

Sortering i array

2 svar · 1 916 visningar · startad av Mycodez

MycodezMedlem sedan feb. 2010445 inlägg
#1

Hej, jag har fått ett problem, jag vill göra en sortering i en array. så nu hoppas jag att ni kan hjälpa mig med detta.

den arrayen jag vill sortera kan se ut så här typ, men alla ska sorteras på samma sak.

Array
(
    [0] => Array
        (
            [id] => 15
            [uid] => 1
            [title] => Egenföretagare
            [summary] => jag är egenföretagare	
            [start-date] => 2013-3-1
            [end-date] => 
            [is-current] => 1
            [company] => Robin Kardell
        )

    [1] => Array
        (
            [id] => 12
            [uid] => 1
            [title] => Reklamutdelare
            [summary] => Jobbat som reklamutdelare då jag hade ett angivet området jag skulle se till att det delades ut reklam till.	
            [start-date] => 2007-8-16
            [end-date] => 2012-6-13
            [is-current] => 0
            [company] => Svenskdirekt reklam
        )

    [2] => Array
        (
            [id] => 13
            [uid] => 1
            [title] => Bemanningspersonal
            [summary] => Var bemanningspersonal för Uniflex på Jeld Wen i Forserum då jag jobbade som ramsnickare.	
            [start-date] => 2012-6-1
            [end-date] => 2012-8-20
            [is-current] => 0
            [company] => Uniflex
        )

)

Hur jag vill sortera denna array är så här.
Är is-current = 1 så vill jag sortera det på när man började detta, ju nyare då är det överst.
är is-current = 0 så vill jag sortera på när man började arbetet och sen vill jag sortera på det när man sluta slutade det, allt de nyaste händelserna ska vara överst.

Hoppas ni kan hjälpa mig med detta

jag funderat lite på att göra en bubble sort
det skriptet jag hitta som jag inte riktigt fatta, men kan man väll användra detta bara mna göra om det till hur jag vill ha det, men då är frågan hur jag jag det

function bubbleSort ($items) {
$size = count($items);
 for ($i=0; $i<$size; $i++) {
	 for ($j=0; $j<$size-1-$i; $j++) {
		 if ($items[$j+1] < $items[$j]) {
			 arraySwap($items, $j, $j+1);
		  }
		}
	 }
	return $items;
}
function arraySwap (&$arr, $index1, $index2) {
	list($arr[$index1], $arr[$index2]) = array($arr[$index2], $arr[$index1]);
 }
MycodezMedlem sedan feb. 2010445 inlägg
#2

Ingen som har en idé på hur man ska kunna lösa detta? :/

MycodezMedlem sedan feb. 2010445 inlägg
#3

Jag har nu lyckats med att få till sortering, med lite eftertanke så hade jag gjort det svårare för mig än var det var. Men ibland e man lite dum :P

men här är min lösning

function invenDescSort($item1,$item2)
				{
				    if ($item1['start-date'] == $item2['start-date']) return 0;
				    return (strtotime($item1['start-date']) < strtotime($item2['start-date'])) ? 1 : -1;
				}
				usort($Positions,'invenDescSort');
				//echo '<pre>',print_r($Positions),'</pre>';
				function invenDescSort1($item1,$item2)
				{
				    if ($item1['end-date'] == $item2['end-date']){
				    	return 0;
					}else if($item1['is-current']){
						return 0;
					}
				    return (strtotime($item1['end-date']) < strtotime($item2['end-date'])) ? 1 : -1;
				}
				usort($Positions,'invenDescSort1');
Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb