[PHP] sorting multi array

2007-04-25 Thread Jon Bennett

hi,

I have the following array, which I need to sort by quantity...

Array
(
   [2408] => Array
   (
   [name] => Havaianas Top Pink Crystal
   [size] => 5 (37/38)
   [quantity] => 4
   )

   [3388] => Array
   (
   [name] => Havaianas Brazil Silver
   [size] => 6/7 (39/40)
   [quantity] => 6
   )

   [2666] => Array
   (
   [name] => Havaianas Brasil Black
   [size] => 8/9 (41/42)
   [quantity] => 1
   )

   [3210] => Array
   (
   [name] => Havaianas Margaridas Yellow
   [size] => 5 (37/38)
   [quantity] => 1
   )

   [2552] => Array
   (
   [name] => Havaianas Flash White
   [size] => 5 (37/38)
   [quantity] => 1
   )
)

I need to keep the indexes if poss.

Many thanks,

jon

--


jon bennett
t: +44 (0) 1225 341 039 w: http://www.jben.net/
iChat (AIM): jbendotnet Skype: jon-bennett

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] sorting multi-array

2003-07-24 Thread Jiří Němec
hello,

i have got a problem, tehere is an array:

$x = array(
   array(15,55,array(1,2,3),3,5,array(1,2,5)),
   array(25,55,array(1,2,3),3,5,array(1,2,5)),
   array(5,55,array(1,2,3),3,5,array(1,2,5))
   );

and I need to sort this arraybz first item of sub-arrays (x[0][0],
$x[1][0], $x[2][0]). this is the correct result:

$x = array(
   array(5,55,array(1,2,3),3,5,array(1,2,5)),
   array(15,55,array(1,2,3),3,5,array(1,2,5)),
   array(25,55,array(1,2,3),3,5,array(1,2,5))
   );

some idea how sort this multidimensional array? thank you for your
reply.

jiří němec, ICQ: 114651500
www.menea.cz - www stránky a aplikace


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] sorting multi array

2007-04-25 Thread Frank Arensmeier
Jon, I would suggest that you should have a look at the function  
"array_multisort". See the manual for details on what this function  
is capable of.


//frank
25 apr 2007 kl. 01.58 skrev Jon Bennett:


hi,

I have the following array, which I need to sort by quantity...

Array
(
   [2408] => Array
   (
   [name] => Havaianas Top Pink Crystal
   [size] => 5 (37/38)
   [quantity] => 4
   )

   [3388] => Array
   (
   [name] => Havaianas Brazil Silver
   [size] => 6/7 (39/40)
   [quantity] => 6
   )

   [2666] => Array
   (
   [name] => Havaianas Brasil Black
   [size] => 8/9 (41/42)
   [quantity] => 1
   )

   [3210] => Array
   (
   [name] => Havaianas Margaridas Yellow
   [size] => 5 (37/38)
   [quantity] => 1
   )

   [2552] => Array
   (
   [name] => Havaianas Flash White
   [size] => 5 (37/38)
   [quantity] => 1
   )
)

I need to keep the indexes if poss.

Many thanks,

jon

--


jon bennett
t: +44 (0) 1225 341 039 w: http://www.jben.net/
iChat (AIM): jbendotnet Skype: jon-bennett

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] sorting multi array

2007-04-25 Thread Chris Boget
> I have the following array, which I need to sort by quantity...
> I need to keep the indexes if poss.

This may not be the most elegant solution.  Let's call your array
$origArray

$tmpArray = array();
foreach( $origArray as $elKey => $elArray ) {
  $tmpArray[$elArray['quantity']] = $elKey;

}

if( ksort( $tmpArray )) {
  $sortedArray = array();
  foreach( $tmpArray as $elKey ) {
$sortedArray[$elKey] = $origArray[$elKey];

  }
  echo 'Original: ' . print_r( $origArray, TRUE ) '';
  echo 'Sorted: ' . print_r( $sortedArray, TRUE ) '';

} else {
  echo 'Sorry, couldn\'t sort';

}

thnx,
Chris

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] sorting multi array

2007-04-25 Thread Zoltán Németh
2007. 04. 25, szerda keltezéssel 11.39-kor Chris Boget ezt írta:
> > I have the following array, which I need to sort by quantity...
> > I need to keep the indexes if poss.
> 
> This may not be the most elegant solution.  Let's call your array
> $origArray
> 
> $tmpArray = array();
> foreach( $origArray as $elKey => $elArray ) {
>   $tmpArray[$elArray['quantity']] = $elKey;
> 
> }
> 
> if( ksort( $tmpArray )) {
>   $sortedArray = array();
>   foreach( $tmpArray as $elKey ) {
> $sortedArray[$elKey] = $origArray[$elKey];
> 
>   }
>   echo 'Original: ' . print_r( $origArray, TRUE ) '';
>   echo 'Sorted: ' . print_r( $sortedArray, TRUE ) '';
> 
> } else {
>   echo 'Sorry, couldn\'t sort';
> 
> }

this won't work if he has the same quantity for several keys, I think

greets
Zoltán Németh

> 
> thnx,
> Chris
> 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] sorting multi array

2007-04-25 Thread Chris Boget

this won't work if he has the same quantity for several keys, I think


Yes, you are correct.  If that is the case, then you would just need to 
change the following line


$tmpArray[$elArray['quantity']] = $elKey;

to

$tmpArray[$elArray['quantity']][] = $elKey;

then change logic in this loop:

foreach( $tmpArray as $elKey ) {

to handle the additional array.  If additional sorting needs to occur for 
those keys that have the same quantity then I think recursion will be in 
order.


thnx,
Chris

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] sorting multi array

2007-04-25 Thread [EMAIL PROTECTED]
array_multisort accepts column arrays but here you try to sort row based  
arrays.


try this:
 $b[self::$sortMember];
}
}


ArrayUtility::sortByMember($array, 'quantity');

?>
Am 25.04.2007, 12:36 Uhr, schrieb Frank Arensmeier  
<[EMAIL PROTECTED]>:


Jon, I would suggest that you should have a look at the function  
"array_multisort". See the manual for details on what this function is  
capable of.


//frank
25 apr 2007 kl. 01.58 skrev Jon Bennett:


hi,

I have the following array, which I need to sort by quantity...

Array
(
   [2408] => Array
   (
   [name] => Havaianas Top Pink Crystal
   [size] => 5 (37/38)
   [quantity] => 4
   )

   [3388] => Array
   (
   [name] => Havaianas Brazil Silver
   [size] => 6/7 (39/40)
   [quantity] => 6
   )

   [2666] => Array
   (
   [name] => Havaianas Brasil Black
   [size] => 8/9 (41/42)
   [quantity] => 1
   )

   [3210] => Array
   (
   [name] => Havaianas Margaridas Yellow
   [size] => 5 (37/38)
   [quantity] => 1
   )

   [2552] => Array
   (
   [name] => Havaianas Flash White
   [size] => 5 (37/38)
   [quantity] => 1
   )
)

I need to keep the indexes if poss.

Many thanks,

jon

--

jon bennett
t: +44 (0) 1225 341 039 w: http://www.jben.net/
iChat (AIM): jbendotnet Skype: jon-bennett

--PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] sorting multi array

2007-04-25 Thread Myron Turner

Jon Bennett wrote:

hi,

I have the following array, which I need to sort by quantity...

Array
(
   [2408] => Array
   (
   [name] => Havaianas Top Pink Crystal
   [size] => 5 (37/38)
   [quantity] => 4
   )

   [3388] => Array
   (
   [name] => Havaianas Brazil Silver
   [size] => 6/7 (39/40)
   [quantity] => 6
   )

   [2666] => Array
   (
   [name] => Havaianas Brasil Black
   [size] => 8/9 (41/42)
   [quantity] => 1
   )

   [3210] => Array
   (
   [name] => Havaianas Margaridas Yellow
   [size] => 5 (37/38)
   [quantity] => 1
   )

   [2552] => Array
   (
   [name] => Havaianas Flash White
   [size] => 5 (37/38)
   [quantity] => 1
   )
)

I need to keep the indexes if poss.

Many thanks,

jon


This works for me:


function cmp($a, $b)
{
   $aq = $a['quantity'];
   $bq = $b['quantity'];

   if ($a == $b) {
   return 0;
   }
   return ($aq < $bq) ? -1 : 1;
}

uasort($data, "cmp");

To reverse the sort order:  return ($aq > $bq) ? -1 : 1;

--

_
Myron Turner
http://www.room535.org
http://www.bstatzero.org
http://www.mturner.org/XML_PullParser/

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] sorting multi array

2007-04-25 Thread Richard Lynch
Search the archives for "multisort array" and you should find this
thread a few thousand times...

On Tue, April 24, 2007 6:58 pm, Jon Bennett wrote:
> hi,
>
> I have the following array, which I need to sort by quantity...
>
> Array
> (
> [2408] => Array
> (
> [name] => Havaianas Top Pink Crystal
> [size] => 5 (37/38)
> [quantity] => 4
> )
>
> [3388] => Array
> (
> [name] => Havaianas Brazil Silver
> [size] => 6/7 (39/40)
> [quantity] => 6
> )
>
> [2666] => Array
> (
> [name] => Havaianas Brasil Black
> [size] => 8/9 (41/42)
> [quantity] => 1
> )
>
> [3210] => Array
> (
> [name] => Havaianas Margaridas Yellow
> [size] => 5 (37/38)
> [quantity] => 1
> )
>
> [2552] => Array
> (
> [name] => Havaianas Flash White
> [size] => 5 (37/38)
> [quantity] => 1
> )
> )
>
> I need to keep the indexes if poss.
>
> Many thanks,
>
> jon
>
> --
>
>
> jon bennett
> t: +44 (0) 1225 341 039 w: http://www.jben.net/
> iChat (AIM): jbendotnet Skype: jon-bennett
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] sorting multi-array

2003-07-24 Thread Marek Kilimajer
www.php.net/usort - slight modification of the example (hint: add [0] to 
$a and $b).

Jiří Němec wrote:

hello,

i have got a problem, tehere is an array:

$x = array(
   array(15,55,array(1,2,3),3,5,array(1,2,5)),
   array(25,55,array(1,2,3),3,5,array(1,2,5)),
   array(5,55,array(1,2,3),3,5,array(1,2,5))
   );
and I need to sort this arraybz first item of sub-arrays (x[0][0],
$x[1][0], $x[2][0]). this is the correct result:
$x = array(
   array(5,55,array(1,2,3),3,5,array(1,2,5)),
   array(15,55,array(1,2,3),3,5,array(1,2,5)),
   array(25,55,array(1,2,3),3,5,array(1,2,5))
   );
some idea how sort this multidimensional array? thank you for your
reply.
jiří němec, ICQ: 114651500
www.menea.cz - www stránky a aplikace



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php