我有一个像这样的字符串数组:
array
0 => string 'cheese=french'
1 => string 'pizza=large&cheese=french'
2 => string 'cheese=french&pizza=small'
3 => string 'cheese=italian'
我需要按字母顺序对数组中字符串中的每个子字符串(除以&)进行排序。例如: pizza = large& cheese = French应该是另一种方式:cheese = french& pizza = large,因为'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循环中使用sort,如:
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 :(得分: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";
}
以上示例将输出:
fruits [0] = apple
fruits [1] =香蕉
fruits [2] = lemon
fruits [3] = orange
答案 1 :(得分:0)
sort
返回一个布尔值(实际上没用)并进行就地排序。代码可以像
// note iteration by reference
foreach($exploded_urls as &$url_to_sort){
sort($url_to_sort);
}
在此循环之后,$exploded_urls
的每个元素都将被排序。