📄 language.types.array.html
字号:
<span style="color: #0000BB"><?php<br />$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">E_ERROR</span><span style="color: #007700">] = </span><span style="color: #DD0000">"A fatal error has occured"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">E_WARNING</span><span style="color: #007700">] = </span><span style="color: #DD0000">"PHP issued a warning"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">E_NOTICE</span><span style="color: #007700">] = </span><span style="color: #DD0000">"This is just an informal notice"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> <p class="para"> Note that <i>E_ERROR</i> is also a valid identifier, just like <i>bar</i> in the first example. But the last example is in fact the same as writing: </p> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br />$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">] = </span><span style="color: #DD0000">"A fatal error has occured"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">] = </span><span style="color: #DD0000">"PHP issued a warning"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$error_descriptions</span><span style="color: #007700">[</span><span style="color: #0000BB">8</span><span style="color: #007700">] = </span><span style="color: #DD0000">"This is just an informal notice"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> <p class="para"> because <i>E_ERROR</i> equals <i>1</i>, etc. </p> <div id="language.types.array.foo-bar.why" class="sect4"> <h5 class="title">So why is it bad then?</h5> <p class="para"> At some point in the future, the PHP team might want to add another constant or keyword, or a constant in other code may interfere. For example, it is already wrong to use the words <i>empty</i> and <i>default</i> this way, since they are <a href="reserved.html" class="link">reserved keywords</a>. </p> <blockquote><p><b class="note">Note</b>: <span class="simpara"> To reiterate, inside a double-quoted <a href="language.types.string.html" class="type string">string</a>, it's valid to not surround array indexes with quotes so <i>"$foo[bar]"</i> is valid. See the above examples for details on why as well as the section on <a href="language.types.string.html#language.types.string.parsing" class="link">variable parsing in strings</a>. </span> </p></blockquote> </div> </div> </div> <div id="language.types.array.casting" class="sect2"> <h3 class="title">Converting to array</h3> <p class="para"> For any of the types: <a href="language.types.integer.html" class="type integer">integer</a>, <a href="language.types.float.html" class="type float">float</a>, <a href="language.types.string.html" class="type string">string</a>, <a href="language.types.boolean.html" class="type boolean">boolean</a> and <a href="language.types.resource.html" class="type resource">resource</a>, converting a value to an <a href="language.types.array.html" class="type array">array</a> results in an array with a single element with index zero and the value of the scalar which was converted. In other words, <i>(array)$scalarValue</i> is exactly the same as <i>array($scalarValue)</i>. </p> <p class="para"> If an <a href="language.types.object.html" class="type object">object</a> is converted to an <a href="language.types.array.html" class="type array">array</a>, the result is an <a href="language.types.array.html" class="type array">array</a> whose elements are the <a href="language.types.object.html" class="type object">object</a>'s properties. The keys are the member variable names, with a few notable exceptions: private variables have the class name prepended to the variable name; protected variables have a '*' prepended to the variable name. These prepended values have null bytes on either side. This can result in some unexpected behaviour: </p> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br /> private </span><span style="color: #0000BB">$A</span><span style="color: #007700">; </span><span style="color: #FF8000">// This will become '\0A\0A'<br /></span><span style="color: #007700">}<br /><br />class </span><span style="color: #0000BB">B </span><span style="color: #007700">extends </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br /> private </span><span style="color: #0000BB">$A</span><span style="color: #007700">; </span><span style="color: #FF8000">// This will become '\0B\0A'<br /> </span><span style="color: #007700">public </span><span style="color: #0000BB">$AA</span><span style="color: #007700">; </span><span style="color: #FF8000">// This will become 'AA'<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">((array) new </span><span style="color: #0000BB">B</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> <p class="para"> The above will appear to have two keys named 'AA', although one of them is actually named '\0A\0A'. </p> <p class="para"> Converting <b><tt>NULL</tt></b> to an <a href="language.types.array.html" class="type array">array</a> results in an empty <a href="language.types.array.html" class="type array">array</a>. </p> </div> <div id="language.types.array.comparing" class="sect2"> <h3 class="title">Comparing</h3> <p class="para"> It is possible to compare arrays with the <a href="function.array-diff.html" class="function">array_diff()</a> function and with <a href="language.operators.array.html" class="link">array operators</a>. </p> </div> <div id="language.types.array.examples" class="sect2"> <h3 class="title">Examples</h3> <p class="para"> The array type in PHP is very versatile. Here are some examples: </p> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">// this<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= array( </span><span style="color: #DD0000">'color' </span><span style="color: #007700">=> </span><span style="color: #DD0000">'red'</span><span style="color: #007700">,<br /> </span><span style="color: #DD0000">'taste' </span><span style="color: #007700">=> </span><span style="color: #DD0000">'sweet'</span><span style="color: #007700">,<br /> </span><span style="color: #DD0000">'shape' </span><span style="color: #007700">=> </span><span style="color: #DD0000">'round'</span><span style="color: #007700">,<br /> </span><span style="color: #DD0000">'name' </span><span style="color: #007700">=> </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">4 </span><span style="color: #FF8000">// key will be 0<br /> </span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// is completely equivalent with<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'color'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'red'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'taste'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'sweet'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'shape'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'round'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'name'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[] = </span><span style="color: #0000BB">4</span><span style="color: #007700">; </span><span style="color: #FF8000">// key will be 0<br /><br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'a'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'b'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'c'</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// will result in the array array(0 => 'a' , 1 => 'b' , 2 => 'c'),<br />// or simply array('a', 'b', 'c')<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> <div class="example"> <p><b>Example #1 Using array()</b></p> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -