我在Continente..Both类中有2个数组,我用mysql数据库中的记录填充数组。
class Continente{
public $continente = array();
public $tari= array();
}
我有一个对象,我称这些方法将数据放入我的数组中。
$cont = new Continente;
$cont->setContinente();
$cont->setTari();
现在数组看起来像这样:
Array (
[0] => Array ( [Id] => 1 [Nume] => Europa )
[1] => Array ( [Id] => 2 [Nume] => Asia )
[2] => Array ( [Id] => 3 [Nume] => Africa ) )
和
Array
( [0] => Array ( [Id] => 0 [Nume] => Romania [idContinent] => 1 [Populatie] => 2500 )
[1] => Array ( [Id] => 0 [Nume] => Bulgaria [idContinent] => 1 [Populatie] => 2200 )
[2] => Array ( [Id] => 0 [Nume] => Estonia [idContinent] => 1 [Populatie] => 1100 )
[3] => Array ( [Id] => 0 [Nume] => Japonia [idContinent] => 2 [Populatie] => 5000 )
[4] => Array ( [Id] => 0 [Nume] => China [idContinent] => 2 [Populatie] => 4599 )
[5] => Array ( [Id] => 0 [Nume] => India [idContinent] => 2 [Populatie] => 6000 )
[6] => Array ( [Id] => 0 [Nume] => Egipt [idContinent] => 3 [Populatie] => 444 ) )
现在我需要与3大洲制作一个combox,并且对于所选择的每个大洲,我需要打印前3个国家/地区,按照“Populatie”中的最大数字排序。
所以我可以选择各大洲的国家...我有Id = idContinent。
现在我真的不知道该怎么做。在php中为此写一个方法?因为我已经拥有数组......或者html?
这是我试过的:
<html>
<head></head>
<body>
<div>
<br>
<select>
<?php
foreach($cont->tari as $val ){
echo '<option value="'.$val.'">'.$val.'</option>';
}
?>
</select>
</div>
</body>
</html>
答案 0 :(得分:1)
如果你能做到这一点,我认为你可以清理你的数据结构,这样可以更容易地完成你想要做的事情。如果您存储这样的信息:
$data = array( Europa => array (Romania => 2500,
Bulgaria => 2200,
Estonia => 1100 ),
Asia => array ( Japonia => 5000,
China => 4599,
India => 6000 )
...);
然后你可以消除对你的&#34; ID&#34;键,只需使用ID的数组索引。
然后,您可以使用arsort()
按值对子阵列进行排序。像这样:
foreach( $data as $cont => $pop_data ) {
arsort( $pop_data );
}
然后,要创建组合框,请使用类似的代码:
foreach( $data as $cont => $pop_data ) {
echo $cont . " Population Info:" . "<br>"; // or whatever
foreach( $pop_data as $country => $pop ) {
echo '<option value="'.$pop.'">'.$pop.'</option>';
}
}