2013-01-14 36 views
-1

我想对数组的内容进行排序,具体取决于加载到页面中的动态数据。在PHP中的Array()中使用变量

for ($i = 0; $i < $x; $i++) { 
    if ($string != "") $string = $string . ", "; 
    $string = $string . "\"$id[$i]\" => \"$land[$i]\""; 

} 
echo $string . "<br>"; //1 
$my_array = array($string); 
print_r($my_array); //2 

asort($my_array); 
print_r($my_array); //3 


$my_array = array("832838" => "32", "233463" => "3"); 

asort($my_array); 
print_r($my_array); //4 

产生这样的输出

1 "832838" => "32", "233463" => "3" 
2 Array ([0] => "832838" => "32", "233463" => "3") 
3 Array ([0] => "832838" => "32", "233463" => "3") 
4 Array ([233463] => 3 [832838] => 32) 

1号线是什么,是从输出语句3号线是通过ASORT使用变量投入,以及4号线直接输入,检查其中的错误是,当通过使用变量的array()函数发生混乱时,是否有解决方法?

+1

尝试'usort($ my_array,'custom_function')'。你将需要创建'function custom_function($ a,$ b)',你可以在那里比较它们。 –

+0

这看起来会非常复杂,当问题与数组(),而不是开始在for循环中排序 –

+0

,为什么不在那里创建数组呢?那肯定会为你节省很多的麻烦 – shawndreck

回答

0

如果你想创建像你这样的字符串数组。使用这个:

$string = '"832838" => "32", "233463" => "3"'; 
$my_array = eval("return array({$string});"); 
+0

这对安全而言是一件坏事 –

+0

完美,谢谢 –

0

使用rsort函数来解决。

<?php 
$fruits = array("lemon", "orange", "banana", "apple"); 
rsort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "$key = $val\n"; 
} 
?> 

上面的例子将输出:

0 = orange 
1 = lemon 
2 = banana 
3 = apple 
+0

排序并不是问题的根本在于它的数组创建问题 –