2016-05-02 60 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

感謝您的解釋,並且它工作得非常好! –