我有一个具有这种结构的数组:
array(4) {
[0]=> array(x) {
[0]=> string(x)"London"
[1]=> string(xx) "John"}
[1]=> array(x) {
[0]=> string(x)"London"
[1]=> string(xx) "Charles"}
[2]=> array(x) {
[0]=> string(x)"Paris"
[1]=> string(xx) "Alan"}
[3]=> array(x) {
[0]=> string(x)"Paris"
[1]=> string(x) "Wayne"}
}
如何按以下顺序显示数组数据:
伦敦
约翰|查尔斯
巴黎
艾伦|韦恩
这可以通过一个独特的多维数组来完成吗?或者我应该有另一个数组来选择不同的城市?
我说的是一个循环:
foreach ($cities as $city) {
echo '<div class="city">'.$city.'</div>';
for() {
echo '<div class="persons">'.$persons.'</div>';
}
}
感谢
答案 0 :(得分:2)
创建新的关联数组作为中间步骤可能会很方便。这种方法并不关心城市是否最初分组。
$cities = array();
foreach ($original_array as $entry) {
$cities[$entry[0]][] = $entry[1];
}
新数组将包含城市名称作为键,以及一组人名作为每个城市的相应值。像:
array(2) {
["London"]=> array(2) {
[0]=> "John"
[1]=> "Charles" }
["Paris"]=> array(2) {
[0]=> "Alan"
[1]=> "Wayne" }
}
所以现在你可以做到
foreach ($cities as $city_name => $people) {
echo '<div class="city">'.$city_name.'</div>';
foreach ($people as $person) {
echo '<div class="person">'.$person.'</div>';
}
}
答案 1 :(得分:2)
将您的城市分组到一个新阵列中,然后将其吐出
$newCities = array();
foreach ($cities as $city) {
$newCities[$city[0]][] = $city[1];
}
foreach($newCities as $city => $persons) {
echo '<div class="city">' . $city . '</div>';
// use join to glue the pieces together
echo '<div class="persons">' . join(' | ', $persons) . '</div>';
}
答案 2 :(得分:1)
试试这个
$array = array(
array('0' => array('0' => 'London', '1' => 'John')),
array('1' => array('0' => 'London', '1' => 'Charles')),
array('2' => array('0' => 'Paris', '1' => 'Alan')),
array('3' => array('0' => 'Paris', '1' => 'Wayne'))
);
$i = 0;
foreach ($array as $arr1) {
foreach ($arr1 as $arr2) {
$cities[$arr2[0]][$i] = array($arr2[0],$arr2[1]);
$i++;
}
}
foreach ($cities as $key => $city) {
echo '<h2 class="city">'.$key.'</h2>';
foreach($city as $persons) {
echo '<div class="persons">'.$persons[1].'</div>';
}
echo '<br/>';
}
答案 3 :(得分:0)
我认为这可能会有所帮助
foreach ($cities as $city) {
echo '<div class="city">'.$city.'</div>';
foreach ($cities as $city1) {
if ($city==$city1){
echo '<div class="persons">'.$persons.'</div>';
}
}
}
答案 4 :(得分:0)
由于城市总是按照您的指定进行分组,因此您只需要一个额外的变量来正确执行此操作。假设您的输入数组被称为$people
:
$last_city = '';
foreach ($people as $person) {
if ($person[0] != $last_city) {
if ($last_city != '') echo '</div>'; // Close opened persons block
$last_city = $person[0];
echo '<div class="city">' . $last_city . '</div>';
echo '<div class="persons">';
}
else echo ' | ';
echo $person[1];
}
echo '</div>'; // This assumes there's at least one record in $people
不需要额外的关联数组。请注意,这可能是更多的语义标记:
<div class="city">
<span>London</span>
John | Charles
</div>
在这种情况下,上面的代码是:
$last_city = '';
foreach ($people as $person) {
if ($person[0] != $last_city) {
if ($last_city != '') echo '</div>'; // Close opened city block
$last_city = $person[0];
echo '<div class="city">';
echo '<span>' . $last_city . '</span>';
}
else echo ' | ';
echo $person[1];
}
echo '</div>'; // This assumes there's at least one record in $people