function.array-walk.html
12.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<!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>Wendet eine Benutzerfunktion auf jedem Element eines Arrays an</title>
</head>
<body><div class="manualnavbar" style="text-align: center;">
<div class="prev" style="text-align: left; float: left;"><a href="function.array-walk-recursive.html">array_walk_recursive</a></div>
<div class="next" style="text-align: right; float: right;"><a href="function.array.html">array</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-walk" class="refentry">
<div class="refnamediv">
<h1 class="refname">array_walk</h1>
<p class="verinfo">(PHP 4, PHP 5)</p><p class="refpurpose"><span class="refname">array_walk</span> — <span class="dc-title">Wendet eine Benutzerfunktion auf jedem Element eines Arrays an</span></p>
</div>
<div class="refsect1 description" id="refsect1-function.array-walk-description">
<h3 class="title">Beschreibung</h3>
<div class="methodsynopsis dc-description">
<span class="type">bool</span> <span class="methodname"><strong>array_walk</strong></span>
( <span class="methodparam"><span class="type">array</span> <code class="parameter reference">&$array</code></span>
, <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.callback" class="type callback">callback</a></span> <code class="parameter">$funcname</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">$userdata</code></span>
] )</div>
<p class="simpara">
Wendet die mittels <code class="parameter">funcname</code> angegebene
Benutzerfunktion auf jedes Element von <code class="parameter">array</code>
an.
</p>
<p class="para">
<span class="function"><strong>array_walk()</strong></span> ist nicht von dem internen
Arrayzeiger von <code class="parameter">array</code> betroffen.
<span class="function"><strong>array_walk()</strong></span> geht ungeachtet der Zeigerposition
das gesamte Array durch.
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.array-walk-parameters">
<h3 class="title">Parameter-Liste</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">array</code></dt>
<dd>
<p class="para">
Das Eingabe-Array.
</p>
</dd>
<dt>
<code class="parameter">funcname</code></dt>
<dd>
<p class="para">
Typischerweise akzeptiert <code class="parameter">funcname</code> zwei
Parameter. Der Wert von <code class="parameter">array</code> wird als
erster übergeben, und der Schlüssel/Index als zweiter.
</p>
<blockquote class="note"><p><strong class="note">Hinweis</strong>:
<p class="para">
Wenn <code class="parameter">funcname</code> direkt mit den Werten des
Arrays arbeiten soll, spezifizieren Sie den ersten Parameter
von <code class="parameter">funcname</code> als <a href="language.references.html" class="link">Referenz</a>. Dann werden alle
Änderungen an diesen Elementen direkt in dem originalen Array
durchgeführt.
</p>
</p></blockquote>
<blockquote class="note"><p><strong class="note">Hinweis</strong>:
<p class="para">
Viele interne Funktionen (wie z.B. <span class="function"><a href="function.strtolower.html" class="function">strtolower()</a></span>)
erzeugen eine Warnung, wenn mehr als die erwartete Anzahl von
Parametern übergeben wird; sie sind auch nicht direkt nutzbar als
<code class="parameter">funcname</code>.
</p>
</p></blockquote>
<p class="para">
Nur die Werte von <code class="parameter">array</code> können geändert werden.
Die Struktur des Arrays kann nicht geändert werden, d.h. dass der
Programmierer keine Elemente hinzufügen oder löschen kann und dass
die Reihenfolge der Elemente nicht geändert werden kann. Falls die
Callback-Funktion diese Anforderung nicht beachtet, ist der Verhalten
dieser Funktion nicht definiert und auch nicht vorhersagbar.
</p>
</dd>
<dt>
<code class="parameter">userdata</code></dt>
<dd>
<p class="para">
Wenn der optionale Parameter <code class="parameter">userdata</code>
angegeben ist, wird er als dritter Parameter dem Callback
<code class="parameter">funcname</code> übergeben.
</p>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.array-walk-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 errors" id="refsect1-function.array-walk-errors">
<h3 class="title">Fehler/Exceptions</h3>
<p class="para">
Sollte die Funktion <code class="parameter">funcname</code> mehr als die
ihr übergebenen Parameter benötigen, wird bei jedem Aufruf von
<code class="parameter">funcname</code> durch <span class="function"><strong>array_walk()</strong></span>
eine Fehlermeldung der Stufe <a href="errorfunc.constants.html" class="link">
E_WARNING</a> generiert. Diese Warnmeldungen können unterdrückt
werden, indem man dem Funktionsaufruf von
<span class="function"><strong>array_walk()</strong></span> den Operator <a href="language.operators.errorcontrol.html" class="link">@</a> voranstellt,
oder <span class="function"><a href="function.error-reporting.html" class="function">error_reporting()</a></span> verwendet.
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.array-walk-examples">
<h3 class="title">Beispiele</h3>
<p class="para">
<div class="example" id="example-4956">
<p><strong>Beispiel #1 <span class="function"><strong>array_walk()</strong></span>-Beispiel</strong></p>
<div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB"><?php<br />$fruits </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"d" </span><span style="color: #007700">=> </span><span style="color: #DD0000">"Zitrone"</span><span style="color: #007700">, </span><span style="color: #DD0000">"a" </span><span style="color: #007700">=> </span><span style="color: #DD0000">"Orange"</span><span style="color: #007700">, </span><span style="color: #DD0000">"b" </span><span style="color: #007700">=> </span><span style="color: #DD0000">"Banane"</span><span style="color: #007700">, </span><span style="color: #DD0000">"c" </span><span style="color: #007700">=> </span><span style="color: #DD0000">"Apfel"</span><span style="color: #007700">);<br /><br />function </span><span style="color: #0000BB">test_alter</span><span style="color: #007700">(&</span><span style="color: #0000BB">$item1</span><span style="color: #007700">, </span><span style="color: #0000BB">$key</span><span style="color: #007700">, </span><span style="color: #0000BB">$prefix</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">$item1 </span><span style="color: #007700">= </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$prefix</span><span style="color: #DD0000">: </span><span style="color: #0000BB">$item1</span><span style="color: #DD0000">"</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">test_print</span><span style="color: #007700">(</span><span style="color: #0000BB">$item2</span><span style="color: #007700">, </span><span style="color: #0000BB">$key</span><span style="color: #007700">)<br />{<br /> echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$key</span><span style="color: #DD0000">. </span><span style="color: #0000BB">$item2</span><span style="color: #DD0000"><br>\n"</span><span style="color: #007700">;<br />}<br /><br />echo </span><span style="color: #DD0000">"Vorher ...:\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">array_walk</span><span style="color: #007700">(</span><span style="color: #0000BB">$fruits</span><span style="color: #007700">, </span><span style="color: #DD0000">'test_print'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">array_walk</span><span style="color: #007700">(</span><span style="color: #0000BB">$fruits</span><span style="color: #007700">, </span><span style="color: #DD0000">'test_alter'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Frucht'</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"... und nachher:\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">array_walk</span><span style="color: #007700">(</span><span style="color: #0000BB">$fruits</span><span style="color: #007700">, </span><span style="color: #DD0000">'test_print'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></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>
Vorher ...:
d. Zitrone
a. Orange
b. Banane
c. Apfel
... und nachher:
d. Frucht: Zitrone
a. Frucht: Orange
b. Frucht: Banane
c. Frucht: Apfel
</pre></div>
</div>
</div>
</p>
</div>
<div class="refsect1 seealso" id="refsect1-function.array-walk-seealso">
<h3 class="title">Siehe auch</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="function.array-walk-recursive.html" class="function" rel="rdfs-seeAlso">array_walk_recursive()</a> - Wendet eine Benutzerfunktion rekursiv auf jedes Element eines
Arrays an</span></li>
<li class="member"><span class="function"><a href="function.iterator-apply.html" class="function" rel="rdfs-seeAlso">iterator_apply()</a> - Call a function for every element in an iterator</span></li>
<li class="member"><span class="function"><a href="function.create-function.html" class="function" rel="rdfs-seeAlso">create_function()</a> - Erzeugen einer anonymen / temporären (Lambda-Stil) Funktion</span></li>
<li class="member"><span class="function"><a href="function.list.html" class="function" rel="rdfs-seeAlso">list()</a> - Weist Variablen zu, als wären sie ein Array</span></li>
<li class="member"><span class="function"><a href="function.each.html" class="function" rel="rdfs-seeAlso">each()</a> - Liefert das aktuelle Paar (Schlüssel und Wert) eines Arrays und
rückt den Arrayzeiger vor</span></li>
<li class="member"><span class="function"><a href="function.call-user-func-array.html" class="function" rel="rdfs-seeAlso">call_user_func_array()</a> - Call a callback with an array of parameters</span></li>
<li class="member"><span class="function"><a href="function.array-map.html" class="function" rel="rdfs-seeAlso">array_map()</a> - Wendet eine Callback-Funktion auf die Elemente von Arrays an</span></li>
<li class="member">Informationen über den <a href="language.pseudo-types.html#language.types.callback" class="link">Callback</a>-Typ</li>
<li class="member"><a href="control-structures.foreach.html" class="link">foreach</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-walk-recursive.html">array_walk_recursive</a></div>
<div class="next" style="text-align: right; float: right;"><a href="function.array.html">array</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>