2013-10-06 87 views
0

我有一个字符串像这样的数组:我怎样才能字符串数组的子分类

array 
    0 => string 'cheese=french' 
    1 => string 'pizza=large&cheese=french' 
    2 => string 'cheese=french&pizza=small' 
    3 => string 'cheese=italian' 

我需要在字符串中的每个子(由&分)数组中alphabettically排序。例如: 比萨=大&芝士=法国应该是相反的方式:芝士=法国&比萨=大,因为'C'在'P'之前。

我想我可能会爆炸的原始数组是这样的:

foreach ($urls as $url) 
{ 
    $exploded_urls[] = explode('&',$url); 
} 

array 
    0 => array 
     0 => string 'cheese=french' 
    1 => array 
     0 => string 'pizza=large' 
     1 => string 'cheese=french' 
    2 => array 
     0 => string 'cheese=french' 
     1 => string 'pizza=small' 
    3 => array 
     0 => string 'cheese=italian' 

,然后在foreach循环排序使用,如:

foreach($exploded_urls as $url_to_sort) 
{ 
    $sorted_urls[] = sort($url_to_sort); 
} 

但是当我这样做,它只是返回:

array 
    0 => boolean true 
    1 => boolean true 
    2 => boolean true 
    3 => boolean true 
    4 => boolean true 

达:

14 => boolean true 

当我做这样的:

foreach($exploded_urls as $url_to_sort) 
{ 
    sort($url_to_sort); 
} 

我回来后,排序的阵列中的一个:

array 
    0 => string 'cheese=dutch' 
    1 => string 'pizza=small' 

什么是去了解这个正确的方法是什么?

回答

0

sort返回一个布尔值(这实际上是无用的),并在原地进行排序。代码可以很简单

// note iteration by reference 
foreach($exploded_urls as &$url_to_sort){ 
    sort($url_to_sort); 
} 

在此循环之后,将对$exploded_urls的每个元素进行排序。

1

sort函数返回一个布尔值来显示它是否成功。在您的行中:

$sorted_urls[] = sort($url_to_sort); 

您正在将sort的返回值(true或false)赋值给$ sorted_urls数组。你不需要这样做 - sort会修改你调用它的数组,所以不要试图将结果分配给一个新数组,只需调用sort然后看看$ url_to_sort为你的排序数组。

从文档上sort

$fruits = array("lemon", "orange", "banana", "apple"); 
    sort($fruits); 
    foreach ($fruits as $key => $val) { 
     echo "fruits[" . $key . "] = " . $val . "\n"; 
    } 

上例将输出:

水果[0] =苹果

水果[1] =香蕉

水果[2 ] =柠檬

水果[3] =橙色

相关问题