function.array-multisort.html 20.1 KB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Sortiert mehrere oder multidimensionale Arrays</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="function.array-merge.html">array_merge</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="function.array-pad.html">array_pad</a></div>
 <div class="up"><a href="ref.array.html">Array Funktionen</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="function.array-multisort" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">array_multisort</h1>
  <p class="verinfo">(PHP 4, PHP 5)</p><p class="refpurpose"><span class="refname">array_multisort</span> &mdash; <span class="dc-title">Sortiert mehrere oder multidimensionale Arrays</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.array-multisort-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="type">bool</span> <span class="methodname"><strong>array_multisort</strong></span>
    ( <span class="methodparam"><span class="type">array</span> <code class="parameter reference">&$arr</code></span>
   [, <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <code class="parameter">$arg</code><span class="initializer"> = SORT_ASC</span></span>
   [, <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <code class="parameter">$arg</code><span class="initializer"> = SORT_REGULAR</span></span>
   [, <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <code class="parameter">$...</code></span>
  ]]] )</div>

  <p class="para rdfs-comment">
   <span class="function"><strong>array_multisort()</strong></span> wird zum Sortieren von
   entweder mehreren Arrays auf einmal, oder eines
   multidimensionalen Arrays nach einer oder mehreren Dimensionen
   benutzt.
  </p>
  <p class="para">
   Assoziative (<span class="type"><a href="language.types.string.html" class="type string">string</a></span>) Schlüssel werden beibehalten,
   während numerische Schlüssel neu indexiert werden.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.array-multisort-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>

    
     <dt>
<code class="parameter">arr</code></dt>

     <dd>

      <p class="para">
       Ein zu sortierendes <span class="type"><a href="language.types.array.html" class="type array">array</a></span>.
      </p>
     </dd>

    
    
     <dt>
<code class="parameter">arg</code></dt>

     <dd>

      <p class="para">
       Optional ein weiteres <span class="type"><a href="language.types.array.html" class="type array">array</a></span>, oder Sortieroptionen
       für das vorherige <span class="type"><a href="language.types.array.html" class="type array">array</a></span>-Argument:
       <strong><code>SORT_ASC</code></strong>,
       <strong><code>SORT_DESC</code></strong>,
       <strong><code>SORT_REGULAR</code></strong>,
       <strong><code>SORT_NUMERIC</code></strong>,
       <strong><code>SORT_STRING</code></strong>.
      </p>
     </dd>

    
    
     <dt>
<code class="parameter">...</code></dt>

     <dd>

      <p class="para">
       Weitere Parameter (<code class="parameter">arg</code>).
      </p>
     </dd>

    
   </dl>

  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.array-multisort-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Gibt bei Erfolg <strong><code>TRUE</code></strong> zurück. Im Fehlerfall wird <strong><code>FALSE</code></strong> zurückgegeben.
  </p>
 </div>

 <div class="refsect1 examples" id="refsect1-function.array-multisort-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-4925">
    <p><strong>Beispiel #1 Sortieren mehrerer Arrays</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$ar1&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #0000BB">10</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$ar2&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">array_multisort</span><span style="color: #007700">(</span><span style="color: #0000BB">$ar1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$ar2</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$ar1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$ar2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents"><p>
     In diesem Beispiel enthält das erste Array nach dem Sortieren 0,
     10, 100, 100. Das zweite Array wird 4, 1, 2, 3 enthalten. Die
     Einträge des zweiten Arrays, welche den identischen Einträgen des
     ersten Arrays entsprechen (100 und 100), wurden ebenfalls
     sortiert.
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
array(4) {
  [0]=&gt; int(0)
  [1]=&gt; int(10)
  [2]=&gt; int(100)
  [3]=&gt; int(100)
}
array(4) {
  [0]=&gt; int(4)
  [1]=&gt; int(1)
  [2]=&gt; int(2)
  [3]=&gt; int(3)
}
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-4926">
    <p><strong>Beispiel #2 Sortieren eines mehrdimensionalen Arrays</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$ar&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(</span><span style="color: #DD0000">"10"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">11</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"a"</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"2"</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /></span><span style="color: #0000BB">array_multisort</span><span style="color: #007700">(</span><span style="color: #0000BB">$ar</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">SORT_ASC</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SORT_STRING</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ar</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">SORT_NUMERIC</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SORT_DESC</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$ar</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents"><p>
     In diesem Beispiel wird sich das erste Array nach der Sortierung
     in &quot;10&quot;, 100, 100, 11, &quot;a&quot; ändern (es wurde als Strings in
     aufsteigender Reihenfolge sortiert). Das zweite wird
     1, 3, &quot;2&quot;, 2, 1 enthalten (sortiert als Zahlen in absteigender Reihe).
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
array(2) {
  [0]=&gt; array(5) {
    [0]=&gt; string(2) &quot;10&quot;
    [1]=&gt; int(100)
    [2]=&gt; int(100)
    [3]=&gt; int(11)
    [4]=&gt; string(1) &quot;a&quot;
  }
  [1]=&gt; array(5) {
    [0]=&gt; int(1)
    [1]=&gt; int(3)
    [2]=&gt; string(1) &quot;2&quot;
    [3]=&gt; int(2)
    [4]=&gt; int(1)
  }
}
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-4927">
    <p><strong>Beispiel #3 Datenbankdaten sortieren</strong></p>
    <div class="example-contents"><p>
     In diesem Beispiel repräsentiert jedes Element des Arrays
     <var class="varname"><var class="varname">data</var></var> eine Zeile einer Tabelle. Dieser Typ
     von Datensätzen ist typisch für Datenbankinhalte.
    </p></div>
    <div class="example-contents"><p>
     Beispieldaten:
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Band   | Auflage
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7
</pre></div>
    </div>
    <div class="example-contents"><p>
     Die Daten als <var class="varname"><var class="varname">data</var></var> genanntes Array. Dieses würde
     man üblicherweise erhalten, indem man zum Beispiel mit
     <span class="function"><a href="function.mysql-fetch-assoc.html" class="function">mysql_fetch_assoc()</a></span> eine Schleife baut.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$data</span><span style="color: #007700">[]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">'Band'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">67</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Auflage'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$data</span><span style="color: #007700">[]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">'Band'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">86</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Auflage'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$data</span><span style="color: #007700">[]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">'Band'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">85</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Auflage'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$data</span><span style="color: #007700">[]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">'Band'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">98</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Auflage'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$data</span><span style="color: #007700">[]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">'Band'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">86</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Auflage'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$data</span><span style="color: #007700">[]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">'Band'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">67</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Auflage'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">7</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents"><p>
     In diesem Beispiel werden wir nach <var class="varname"><var class="varname">Band</var></var> absteigend
     sortieren und nach <var class="varname"><var class="varname">Auflage</var></var> aufsteigend.
    </p></div>
    <div class="example-contents"><p>
     Wir haben ein Array von Zeilen, aber
     <span class="function"><strong>array_multisort()</strong></span> benötigt ein Array von Spalten,
     daher benutzen wir den Code unten, um die Spalten zu bekommen und
     dann die Sortierung durchzuführen.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">//&nbsp;Hole&nbsp;eine&nbsp;Liste&nbsp;von&nbsp;Spalten<br /></span><span style="color: #007700">foreach&nbsp;(</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$row</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$band</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #DD0000">'Band'</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$auflage</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #DD0000">'Auflage'</span><span style="color: #007700">];<br />}<br /><br /></span><span style="color: #FF8000">//&nbsp;Die&nbsp;Daten&nbsp;mit&nbsp;'Band'&nbsp;absteigend,&nbsp;die&nbsp;mit&nbsp;'Auflage'&nbsp;aufsteigend&nbsp;sortieren.<br />//&nbsp;Geben&nbsp;Sie&nbsp;$data&nbsp;als&nbsp;letzten&nbsp;Parameter&nbsp;an,&nbsp;um&nbsp;nach&nbsp;dem&nbsp;gemeinsamen<br />//&nbsp;Schlüssel&nbsp;zu&nbsp;sortieren.<br /></span><span style="color: #0000BB">array_multisort</span><span style="color: #007700">(</span><span style="color: #0000BB">$band</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SORT_DESC</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$auflage</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SORT_ASC</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents"><p>
     Der Datensatz ist jetzt sortiert und wird wie folgt aussehen:
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Band | Auflage
-----+--------
  98 |       2
  86 |       1
  86 |       6
  85 |       6
  67 |       2
  67 |       7
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-4928">
    <p><strong>Beispiel #4 Groß-/Kleinschreibung nicht-beachtende Sortierung</strong></p>
    <div class="example-contents"><p>
     Sowohl <strong><code>SORT_STRING</code></strong> als auch
     <strong><code>SORT_REGULAR</code></strong> beachten die Groß-/Kleinschreibung,
     weshalb Strings, welche mit großem Buchstaben beginnen, vor Strings
     einsortiert werden, die mit kleinem Buchstaben anfangen.
    </p></div>
    <div class="example-contents"><p>
     Um eine Suche durchzuführen, die die Groß-/Kleinschreibung nicht
     beachtet, muss man erzwingen, dass die Sortierreihenfolge von einer
     Kopie des Originalarrays in Kleinschreibung festgelegt wird.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$array&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'Alpha'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'atomar'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'Beta'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'bank'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$array_lowercase&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">array_map</span><span style="color: #007700">(</span><span style="color: #DD0000">'strtolower'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">array_multisort</span><span style="color: #007700">(</span><span style="color: #0000BB">$array_lowercase</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SORT_ASC</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SORT_STRING</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Array
(
    [0] =&gt; Alpha
    [1] =&gt; atomar
    [2] =&gt; bank
    [3] =&gt; Beta
)
</pre></div>
    </div>
   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.array-multisort-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li class="member"><span class="function"><a href="function.usort.html" class="function" rel="rdfs-seeAlso">usort()</a> - Sortiert ein Array nach Werten mittels einer benutzerdefinierten
   Vergleichsfunktion</span></li>
    <li class="member">Den <a href="array.sorting.html" class="link">Vergleich von Arraysortierungsfunktionen</a></li>
   </ul>
  </p>
 </div>


</div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="function.array-merge.html">array_merge</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="function.array-pad.html">array_pad</a></div>
 <div class="up"><a href="ref.array.html">Array Funktionen</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>