|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-09-26 10:13 UTC] jpapin at free dot fr
Using array_multisort in a function don't work if the array
is "global" (you can paste the following code) :
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<body>
<?
function t() {
global $row;
$file = fopen("file.txt","r") or die;
while (!feof($file)) {
$row[] = fgetcsv($file,80,";");
}
/* $row[] like this
Array ( [0] => Array ( [0] => 406
[1] => xxxxxxxxxxxxxxxxxxxx
[2] => 5,72 )
[1] => Array ( [0] => 001
[1] => zzzzzzzzzzzzzzzzzzzzz
[2] => 5,77 )
[2] => Array ( [0] => 402
[1] => aaaaaaaaaaaaaaaaaaaaa
[2] => 13,71 )
[3] => Array ( [0] => 009
[1] => fffffffffffffffffffff
[2] => 7,61 )
)
I want to sort it on aaa.../fff.../xxx.../zzz...
*/
fclose($file);
foreach ( $row as $value ) {
$sortarray[] = $value[1];
}
/* $sortarray like this
Array ( [0] => xxxxxxxxxxxxxxxxxxxx
[1] => zzzzzzzzzzzzzzzzzzzz
[2] => aaaaaaaaaaaaaaaaaaaa
[3] => ffffffffffffffffffff
)
*/
// I try to use array_multisort($row,$sortarray); too
array_multisort($sortarray,$row);
print_r($row);
// no change for $row[], until i remove global for $row;
echo "<br>";
print_r($sortarray);
/* $sortarray[], now like this
Array ( [0] => aaaaaaaaaaaaaaaaaaaa
[1] => ffffffffffffffffffff
[2] => xxxxxxxxxxxxxxxxxxxx
[3] => zzzzzzzzzzzzzzzzzzzz
)
or no change if set to global too.
*/
}
t();
?>
</body>
</HTML>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2026 The PHP GroupAll rights reserved. |
Last updated: Wed Feb 18 21:00:01 2026 UTC |
Sorry, try this with and without "global $row;" <? function t() { global $row; $row = array(array("1","Php"),array(2,"I"),array(3,"Love")); foreach ( $row as $value ) { $sortarray[] = $value[1]; } array_multisort($sortarray,$row); print_r($row); echo "<br>"; print_r($sortarray); } t(); ?>Tested with PHP 4.3.1, same problem: Globalized arrays cannot be sorted using array_multisort, although the functions returns TRUE! Another short piece of code to test: <? function test() { global $data; $data= array("first", "fifth", "second", "forth", "third"); $sort= array(1,5,2,4,3); array_multisort($sort, $data); print_r($data); } test(); ?> Without "global $data;" it works fine.