2016-05-02 50 views
0

因此,我与我的朋友PHP脚本卡住了。我想要做的是排序pavadinimas和如果有多个相同的pavadinimas然后排序o_pavadinimas,这部分是好的。但随后所有的信息都是随机的。我的意思是我只排列列,但不排。你有什么想法的家伙,因为我跑出来的吧...由两个数组排序多维数组PHP

<?php 

$file = "Muniko dešros&nbsp;Abraitis&nbsp;[email protected]&nbsp;Www.abraitis.lt&nbsp;Vilius&nbsp;Munikas&nbsp;Muniko dešros&nbsp;Belenkas&nbsp;[email protected]&nbsp;Www.belenkas.lt&nbsp;Vilius&nbsp;Munikas&nbsp;Tomo dešros&nbsp;Abraitis&nbsp;[email protected]&nbsp;Www.abraitis.lt&nbsp;Tomas&nbsp;Vilemaitis&nbsp;Tomo dešros&nbsp;Belenkas&nbsp;[email protected]&nbsp;Www.belenkas.lt&nbsp;Tomas&nbsp;Vilemaitis&nbsp;Dino dešros&nbsp;Dešrynas&nbsp;[email protected]&nbsp;Www.derynas.lt&nbsp;Dinas&nbsp;Šukuosena&nbsp;Dino dešros&nbsp;Abraitis&nbsp;[email protected]&nbsp;Www.abraitis.lt&nbsp;Dinas&nbsp;Šukuosena&nbsp;"; 

$masyvas = explode("&nbsp;", $file); 
$x = count($masyvas); 
print_r($masyvas); 

$rikiavimas = array (
    'pavadinimas' => '', 
    'o_pavadinimas' => '', 
    'email' => '', 
    'svetaines_adresas' => '', 
    'vardas' => '', 
    'pavarde' => '' 
);  
$c=0; 
while($c < $x-4){ 
$rikiavimas['pavadinimas'][] = $masyvas[$c+0]; 
$rikiavimas['o_pavadinimas'][] = $masyvas[$c+1]; 
$rikiavimas['email'][] = $masyvas[$c+2]; 
$rikiavimas['svetaines_adresas'][] = $masyvas[$c+3]; 
$rikiavimas['vardas'][] = $masyvas[$c+4]; 
$rikiavimas['pavarde'][] = $masyvas[$c+5]; 
$c+=6; 
} 
array_multisort($rikiavimas['pavadinimas'], SORT_ASC, SORT_REGULAR, $rikiavimas['o_pavadinimas']); 

$pirmas=count($rikiavimas['pavadinimas']); 
print_r($rikiavimas); 
?> 


<table class="table" align="center" width="800" border="1" cellspacing="0" cellpadding="3"> 
<tr> 
<td align="center"><strong>Produkto pavadinimas</strong></td> 
<td align="center"><strong>Organizacijos pavadinimas</strong></td> 
<td align="center"><strong>El. paštas</strong></td> 
<td align="center"><strong>Svetainės adresas</strong></td> 
<td align="center"><strong>Vardas</strong></td> 
<td align="center"><strong>Pavardė</strong></td> 
</tr> 
<?php 
$y=0; 
while($y < $pirmas){ 
echo "<td>" . $rikiavimas['pavadinimas'][$y] . "</td>"; 
echo "<td>" . $rikiavimas['o_pavadinimas'][$y] . "</td>"; 
echo "<td>" . $rikiavimas['email'][$y] . "</td>"; 
echo "<td>" . $rikiavimas['svetaines_adresas'][$y] . "</td>"; 
echo "<td>" . $rikiavimas['vardas'][$y] . "</td>"; 
echo "<td>" . $rikiavimas['pavarde'][$y] . "</td>"; 
echo "</tr>"; 
$y++; 
} 
?> 
<?php 

?> 
</table> 

编辑:忽略print_r它只是用于测试

+1

请您澄清一下您的意思是“信息随意”。我只是复制粘贴你的代码到一个PHP文件,它显示了一个完全填充和排序表,正如你所需要的。 –

+0

下面是我所看到的截图。 http://postimg.org/image/3pep730wh/ –

+0

@RubenFunai tho第一列是排序,但其他人只是保持原样。所以当你对两列进行排序而不是整个表时,信息随机出现 –

回答

1

问题是使用array_multisort的错误使用相关。目前,你只是排序阵列$ rikiavimas ['pavadinimas']$ rikiavimas ['o_pavadinimas']

阵列:

  • $ rikiavimas [ '电子邮件']
  • $ rikiavimas [ 'svetaines_adresas']
  • $ rikiavimas [ 'vardas']
  • $ rikiavimas [ 'pavarde']

未作修改。 array_multisort不知道这4个数组的任何内容。

我修改了一下你的代码=>我已将$ rikiavimas [name] [index]切换到$ rikiavimas [index] [name]。

<?php 

$file = "Muniko dešros&nbsp;Abraitis&nbsp;[email protected]&nbsp;Www.abraitis.lt&nbsp;Vilius&nbsp;Munikas&nbsp;Muniko dešros&nbsp;Belenkas&nbsp;[email protected]&nbsp;Www.belenkas.lt&nbsp;Vilius&nbsp;Munikas&nbsp;Tomo dešros&nbsp;Abraitis&nbsp;[email protected]&nbsp;Www.abraitis.lt&nbsp;Tomas&nbsp;Vilemaitis&nbsp;Tomo dešros&nbsp;Belenkas&nbsp;[email protected]&nbsp;Www.belenkas.lt&nbsp;Tomas&nbsp;Vilemaitis&nbsp;Dino dešros&nbsp;Dešrynas&nbsp;[email protected]&nbsp;Www.derynas.lt&nbsp;Dinas&nbsp;Šukuosena&nbsp;Dino dešros&nbsp;Abraitis&nbsp;[email protected]&nbsp;Www.abraitis.lt&nbsp;Dinas&nbsp;Šukuosena&nbsp;"; 
$masyvas = explode("&nbsp;", $file); 

$columns = 6; 
$rikiavimas = array(); 
$masyvas = array_chunk($masyvas, $columns); 

foreach ($masyvas as $value) { 
    if (count($value) < $columns) continue; 
    list($tmp['pavadinimas'], 
     $tmp['o_pavadinimas'], 
     $tmp['email'], 
     $tmp['svetaines_adresas'], 
     $tmp['vardas'], 
     $tmp['pavarde'] 
    ) = $value; 
    $rikiavimas[] = $tmp; 
} 

$sort = array(); 
foreach($rikiavimas as $v) { 
    $sort['pavadinimas'][] = $v['pavadinimas']; 
    $sort['o_pavadinimas'][] = $v['o_pavadinimas']; 
} 

array_multisort($sort['pavadinimas'], SORT_ASC, SORT_REGULAR, $sort['o_pavadinimas'], SORT_ASC, SORT_REGULAR, $rikiavimas); 
?> 

<table class="table" align="center" width="800" border="1" cellspacing="0" cellpadding="3"> 
<tr> 
<td align="center"><strong>Produkto pavadinimas</strong></td> 
<td align="center"><strong>Organizacijos pavadinimas</strong></td> 
<td align="center"><strong>El. paštas</strong></td> 
<td align="center"><strong>Svetainės adresas</strong></td> 
<td align="center"><strong>Vardas</strong></td> 
<td align="center"><strong>Pavardė</strong></td> 
</tr> 
<?php 
foreach ($rikiavimas as $row) { 
echo "<td>" . $row['pavadinimas'] . "</td>"; 
echo "<td>" . $row['o_pavadinimas'] . "</td>"; 
echo "<td>" . $row['email'] . "</td>"; 
echo "<td>" . $row['svetaines_adresas'] . "</td>"; 
echo "<td>" . $row['vardas'] . "</td>"; 
echo "<td>" . $row['pavarde'] . "</td>"; 
echo "</tr>"; 
} 
?> 
</table> 
+0

感谢您的解释,并且它工作得非常好! –