有个问题想请教一下以name的第一个字母顺序给company排序:<? foreach($event['Company'] as $company) {
e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
} //alt=".$company['name']." ?>
e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
} //alt=".$company['name']." ?>
备注
ord()函数可以获取ASCII值
int ord(string str);
能不能说的详细一点,谢谢另外能否用asort()函数排序呢
$company数组的值排序呢?
如果你说给$company数组值排序的话 可以用asort()排序~
$newcompany=$com;
$names;
$urls;
foreach($com as $key=>$val) {
$names[$key] = $val['name'];
$urls[$key] = $val['url'];
}
array_multisort($names,SORT_STRING,SORT_ASC,$urls,SORT_STRING,SORT_ASC,$com);//使用name字符串值来排序如果相同则用url字符串值二次排序
print_r($com);
可以使用asortasort
(PHP 4, PHP 5)asort — 对数组进行排序并保持索引关系说明
bool asort ( array &$array [, int $sort_flags ] )
本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。 成功时返回 TRUE, 或者在失败时返回 FALSE. Example #1 asort() 例子<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
以上例程会输出:c = apple
b = banana
d = lemon
a = orange
fruits 被按照字母顺序排序,并且单元的索引关系不变。 可以用可选的参数 sort_flags 改变排序的行为,详情见 sort()。 但是要注意asort默认是A-Z a-z从大写字母到小写字母这样的一个顺序(根据ASCII码来排序的),看是否能满足你的要求
我尝试过用asort(),但是没有变化。这个网站是用的cakephp框架,是不是只能用框架自带的排序函数呢
array("name"=>"ddss", "homepage_url"=>"ad........" .....),....
)这样的结构是不能用sort来直接排序的,需要使用自定义排序,我写了段测试代码,应该可以解决你的问题了,代码如下:<?php
$fruits = array(
array("name" => "qqqsafdabb", "a" => "orange", "b" => "banana", "c" => "apple"),
array("name" => "hresafdabb", "a" => "orange", "b" => "banana", "c" => "apple"),
array("name" => "safdabb", "a" => "orange", "b" => "banana", "c" => "apple"),
array("name" => "cccg", "a" => "orange", "b" => "banana", "c" => "apple")
);//排序函数
function cmp($a,$b)
{
return strcmp($a['name'], $b['name']);
}
//自定义排序
usort($fruits, 'cmp');foreach ($fruits as $key => $val) {
echo "$key = {$val['name']}\n";
}
?>
非常谢谢你的回复,我是PHP入门者,所以很多地方都不太理解刚弄了一下,还是不太成功,我的代码是这样写的:
<?
foreach($event['Company'] as $value) { //生成$company数组
$company = $value;
}
function cmp($a,$b)
{
return strcmp($a['name'], $b['name']);
}
//自定义排序
usort($company, 'cmp');
foreach ($company as $key => $val) {
echo "$key = {$val['name']}\n";
} foreach($event['Company'] as $company) {
e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
} //alt=".$company['name']." ?>实在不好意思,麻烦朋友了
需要再把$company赋回给$event['Company']吗?
感觉有点糊涂了,foreach($event['Company'] as $value) { //生成$company数组
$company = $value;
}这段代码完全不明白意思,赋值的语法也是错的,如果$event['Company']是要排序的数组话,直接传入即可
foreach($event['Company'] as $value) { //生成$company数组
$company[] = $value;
}
function cmp($a,$b)
{
return strcmp($a['name'], $b['name']);
}
//自定义排序
usort($company, 'cmp');foreach ($company as $key => $val) {
echo "$key = {$val['name']}\n";
}foreach($event['Company'] as $company) {
e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
} //alt=".$company['name']." ?>foreach($event['Company'] as $company) {
e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
} //alt=".$company['name']." 这段代码还是不太明白意思,你是要验证呢还是其他的目的?
我就是没搞清楚$event['Comapany']和$company的关系,不过貌似好像他们只是有关联,但不一样,因为我用$event['Comapany']['name']输出不了
不是验证,就是想依次输出各个赞助商的LOGO和URL链接,而且是以名字字母的先后顺序输出