Array_Values () ist eine integrierte Funktion von PHP, die alle Werte im Array zurückgibt, und das zurückgegebene Array ist ein Array ohne Schlüssellenname, und alle Schlüssel werden wieder integriert (ab 0).
Funktionsdefinition:
<span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>) : </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array : Das Eingabearray, Array_Values (), gibt alle Werte in diesem Array zurück.
Rückgabewert: Ein neues Array, das alle Werte im ursprünglichen Array enthält, und der Schlüsselname des ursprünglichen Arrays wird auf aufeinanderfolgende Zahlen zurückgesetzt (ab 0).
Schauen wir uns zunächst ein einfaches Beispiel an, um zu zeigen, wie Sie Array_Values () in einem normalen Array verwenden:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>,
</span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-string">'banana'</span></span><span>,
</span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-string">'cherry'</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => apple
[</span><span><span class="hljs-number">1</span></span><span>] => banana
[</span><span><span class="hljs-number">2</span></span><span>] => cherry
)
</span></span>
Es ist ersichtlich, dass die Schlüsselnamen (1, 2, 3) des ursprünglichen Arrays auf 0, 1, 2 zurückgesetzt wurden und der Wert bleibt.
Für mehrdimensionale Arrays können wir auch Array_Values () verwenden, um die darin enthaltenen Werte zu extrahieren. Beachten Sie jedoch, dass Array_Values () nur auf die äußerste Schicht des Arrays wirkt und die innere Subtarray nicht rekursiv durchquert. Wenn Sie alle Werte in einem mehrdimensionalen Array erhalten müssen, ist eine zusätzliche Verarbeitung erforderlich.
Angenommen, wir haben ein zweidimensionales Array mit mehreren Subtarrays, aus denen wir alle Werte extrahieren möchten:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">"fruit"</span></span><span> => [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>],
</span><span><span class="hljs-string">"vegetable"</span></span><span> => [</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"tomato"</span></span><span>],
</span><span><span class="hljs-string">"meat"</span></span><span> => [</span><span><span class="hljs-string">"chicken"</span></span><span>, </span><span><span class="hljs-string">"beef"</span></span><span>]
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgabeergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => apple
[</span><span><span class="hljs-number">1</span></span><span>] => banana
)
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => carrot
[</span><span><span class="hljs-number">1</span></span><span>] => tomato
)
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => chicken
[</span><span><span class="hljs-number">1</span></span><span>] => beef
)
)
</span></span>
Wie Sie sehen können, arbeitet Array_values () nur auf äußeren Arrays und ändert den Inhalt jedes Subtarray nicht.
Wenn wir alle Werte in ein mehrdimensionales Array erhalten möchten, ohne Schlüsseldamen beizubehalten, können wir es rekursiv behandeln. Dies kann durch Verwendung der Funktion array_map () in Kombination mit Array_Values () erreicht werden:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">get_all_values</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$array</span></span></span><span>) {
</span><span><span class="hljs-variable">$values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$values</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> &</span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_all_values</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>); </span><span><span class="hljs-comment">// Rekursiv interne Arrays verarbeiten</span></span><span>
}
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$values</span></span><span>;
}
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">"fruit"</span></span><span> => [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>],
</span><span><span class="hljs-string">"vegetable"</span></span><span> => [</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"tomato"</span></span><span>],
</span><span><span class="hljs-string">"meat"</span></span><span> => [</span><span><span class="hljs-string">"chicken"</span></span><span>, </span><span><span class="hljs-string">"beef"</span></span><span>]
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_all_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => apple
[</span><span><span class="hljs-number">1</span></span><span>] => banana
[</span><span><span class="hljs-number">2</span></span><span>] => carrot
[</span><span><span class="hljs-number">3</span></span><span>] => tomato
[</span><span><span class="hljs-number">4</span></span><span>] => chicken
[</span><span><span class="hljs-number">5</span></span><span>] => beef
)
</span></span>
Durch Rekursion extrahieren wir erfolgreich alle Werte aus einem mehrdimensionalen Array und geben ein abgeflachtes Array zurück.
Manchmal wollen wir alle Werte eines mehrdimensionalen Arrays in ein einzelnes Array zusammenführen. In diesem Fall kann Array_Values () in Verbindung mit Array_merge () verwendet werden:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">"fruit"</span></span><span> => [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>],
</span><span><span class="hljs-string">"vegetable"</span></span><span> => [</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"tomato"</span></span><span>],
</span><span><span class="hljs-string">"meat"</span></span><span> => [</span><span><span class="hljs-string">"chicken"</span></span><span>, </span><span><span class="hljs-string">"beef"</span></span><span>]
];
</span><span><span class="hljs-variable">$flattened</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(
</span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'fruit'</span></span><span>]),
</span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'vegetable'</span></span><span>]),
</span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'meat'</span></span><span>])
);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$flattened</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => apple
[</span><span><span class="hljs-number">1</span></span><span>] => banana
[</span><span><span class="hljs-number">2</span></span><span>] => carrot
[</span><span><span class="hljs-number">3</span></span><span>] => tomato
[</span><span><span class="hljs-number">4</span></span><span>] => chicken
[</span><span><span class="hljs-number">5</span></span><span>] => beef
)
</span></span>
Auf diese Weise können wir mehrere Unterneuchber in ein Array kombinieren, um die nachfolgende Verarbeitung zu vereinfachen.
Array_Values () ist eine sehr nützliche PHP-Funktion, insbesondere wenn es sich um mehrdimensionale Arrays handelt, die problemlos alle Werte extrahieren können. Obwohl es selbst nicht selbst unterstützt, die Werte aller Subtarrays rekursiv zu extrahieren, können wir dies leicht erreichen, indem wir rekursive Funktionen oder in Kombination mit anderen PHP -Funktionen schreiben.
Ich hoffe, dass dieser Artikel Ihnen helfen kann , die Funktion array_values () durch bestimmte Beispiele besser zu verstehen und zu verwenden.
Verwandte Tags:
array_values