我在php页面上有一个表,其中“Offical_gene_Symbol”列需要对“Assending”进行排序。这是该特定列的php块。
if($test['test_type_id'] == 1 || $test['test_type_id'] == 5) {
$gene_ids = FetchGenesByPanelTest($test['id']);
$genes = array();
foreach($gene_ids as $gi){
$genes[] = FetchGene($gi);
}
<table>
<tr>
<th>Offical Gene Symbol</th>
<th style="width:200px;">OMIM Id</th>
</tr>
<?php foreach($genes as $gene): ?>
<tr>
<td><a href="/gene-detail.php?id=<?= $gene['id']; ?>&iframe=true&width=790&height=600" rel="prettyPhoto" title="<?= htmlentities($gene['offical_gene_symbol']); ?>"><?= $gene['offical_gene_symbol']; ?></a></td>
<td><a href="http://omim.org/entry/<?= $gene['omim_id']; ?>" target="_blank"><?= $gene['omim_id']; ?></a></td>
</tr>
<?php endforeach; ?>
</table>
您能帮忙我在这段代码中如何做到这一点?提前致谢。更新了代码。
答案 0 :(得分:3)
由于$genes
似乎是一个多维数组,我想你希望它按标题排序('offical_gene_symbol')我建议你使用usort函数来为你提供一种创建方法自定义比较算法。
至于比较,php为您提供了两种不同的比较方法:
strcasecmp二进制安全不区分大小写的字符串比较,返回&lt;如果str1小于str2,则为0; &GT;如果str1是0,则为0 大于str2,如果它们相等则为0。
strcmp二进制安全字符串比较(区分大小写)。作为 上述功能。
在php 5.3+中,您可以通过这种方式执行排序:
usort($genes, function($a, $b) {
return strcasecmp($a['offical_gene_symbol'],$b['offical_gene_symbol']);
});
foreach($genes as $gene) {
...
}
在php&lt; 5.3你必须使用一个可调用函数:
function cmp($a, $b)
{
return strcasecmp($a['offical_gene_symbol'],$b['offical_gene_symbol']);
}
usort($genes, 'cmp');
foreach($genes as $gene) {
...
}
答案 1 :(得分:0)
直接使用PHP sort() function。不是吗?
答案 2 :(得分:0)
如果这是一个PHP数组,请检查这个函数,确保检查php docs
中的其他排序函数$array = array(
array('Offical_gene_Symbol' => 'v'),
array('Offical_gene_Symbol' => 't'),
array('Offical_gene_Symbol' => 'a'),
array('Offical_gene_Symbol' => 'c'),
array('Offical_gene_Symbol' => 'd')
);
sort($array);
echo debug($array);
输出
array(5) (
0 => array(1) (
"Offical_gene_Symbol" => string(1) "a"
)
1 => array(1) (
"Offical_gene_Symbol" => string(1) "c"
)
2 => array(1) (
"Offical_gene_Symbol" => string(1) "d"
)
3 => array(1) (
"Offical_gene_Symbol" => string(1) "t"
)
4 => array(1) (
"Offical_gene_Symbol" => string(1) "v"
)
)
rsort($array);
print_r($array);
输出
array(5) (
0 => array(1) (
"Offical_gene_Symbol" => string(1) "v"
)
1 => array(1) (
"Offical_gene_Symbol" => string(1) "t"
)
2 => array(1) (
"Offical_gene_Symbol" => string(1) "d"
)
3 => array(1) (
"Offical_gene_Symbol" => string(1) "c"
)
4 => array(1) (
"Offical_gene_Symbol" => string(1) "a"
)
)
答案 3 :(得分:-1)
您可以在将数组回显到页面之前对其进行排序。
类似的东西:
</tr>
<?php
sort($genes);
foreach($genes as $gene):
?>
<tr>
这将按值以升序为您提供值。
编辑:更改了asort以进行排序。