<pre style="background-color:#262e37;color:#ffffff;font-family:'Consolas';font-size:11.3pt;"><span style="color:#f92672;"><?php<br/></span>$arr <span style="color:#f92672;">= array</span>(<span style="color:#e6db74;">'b' </span><span style="color:#f92672;">=> </span>[<span style="color:#e6db74;">'c' </span><span style="color:#f92672;">=> </span><span style="color:#e6db74;">' d '</span>]);<br/><span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">利用四个</span><span style="color:#66837f;background-color:#191f26;">php</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">系统函数快速处理数组的每个元素:</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;"><br/></span><span style="color:#66837f;background-color:#191f26;">// array_map(); </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">返回用户自定义函数作用后的数组</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;background-color:#191f26;">// array_walk(); </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">对数组中的每个元素应用回调函数。</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;background-color:#191f26;">// array_filter(); </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">用回调函数过滤数组中的元素</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;background-color:#191f26;">// array_reduce(); </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">用回调函数迭代地将数组简化为单一的值</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;background-color:#191f26;">/*<br/></span><span style="color:#66837f;background-color:#191f26;"> </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">总结:</span><span style="color:#66837f;background-color:#191f26;">array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">和</span><span style="color:#66837f;background-color:#191f26;">array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">区别</span><span style="color:#66837f;background-color:#191f26;"><br/></span><span style="color:#66837f;background-color:#191f26;"> 1.array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">注重结果</span><span style="color:#66837f;background-color:#191f26;"> array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">注重过程</span><span style="color:#66837f;background-color:#191f26;"><br/></span><span style="color:#66837f;background-color:#191f26;"> 2.</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">返回值:</span><span style="color:#66837f;background-color:#191f26;">array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">返回数组处理后的数组,</span><span style="color:#66837f;background-color:#191f26;">array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">返回</span><span style="color:#66837f;background-color:#191f26;">bollean<br/></span><span style="color:#66837f;background-color:#191f26;"> 3.array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">不改变原数组</span><span style="color:#66837f;background-color:#191f26;"> array_walk()</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">用</span><span style="color:#66837f;background-color:#191f26;">&</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">引用可以改变原数组</span><span style="color:#66837f;background-color:#191f26;"><br/></span><span style="color:#66837f;background-color:#191f26;"><br/></span><span style="color:#66837f;background-color:#191f26;">*/</span><span style="color:#66837f;"><br/></span><span style="color:#66837f;"><br/></span><span style="color:#66837f;background-color:#191f26;">// </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">利用</span><span style="color:#66837f;background-color:#191f26;">array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">快速清除一维数组的每个元素两边的空格</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66d9ef;font-style:italic;">array_map</span>(<span style="color:#e6db74;">'trim'</span>, $arr);<br/><br/><span style="color:#66837f;background-color:#191f26;">// </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">自定义函数:快速清除多维维数组的每个元素两边的空格 封装成函数</span><span style="color:#66837f;background-color:#191f26;">deep_array_map()</span><span style="color:#66837f;"><br/></span><span style="color:#f92672;">function </span><span style="color:#a6e22e;">deep_array_map</span>(<span style="color:#660000;">$arr</span>)<br/>{<br/> <span style="color:#f92672;">return </span><span style="color:#66d9ef;font-style:italic;">array_map</span>(<span style="color:#f92672;">function </span>(<span style="color:#f92672;">&</span><span style="color:#660000;">$v</span>) {<br/> <span style="color:#f92672;">if </span>(<span style="color:#66d9ef;font-style:italic;">is_array</span>(<span style="color:#660000;">$v</span>)) {<br/> <span style="color:#f92672;">return </span><span style="color:#a6e22e;">deep_array_map</span>(<span style="color:#660000;">$v</span>);<br/> }<br/> <span style="color:#f92672;">return </span><span style="color:#66d9ef;font-style:italic;">trim</span>(<span style="color:#660000;">$v</span>);<br/> }, <span style="color:#660000;">$arr</span>);<br/>}<br/><br/><span style="color:#66837f;background-color:#191f26;">// array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">输出数组的键和值,并且改变原数组 返回</span><span style="color:#66837f;background-color:#191f26;">bollean</span><span style="color:#66837f;"><br/></span><span style="color:#66d9ef;font-style:italic;">array_walk</span>($arr1, <span style="color:#f92672;">function </span>(<span style="color:#660000;">$v</span>, <span style="color:#660000;">$k</span>) {<br/> <span style="color:#f92672;">if </span>(<span style="color:#f92672;">!</span><span style="color:#66d9ef;font-style:italic;">is_array</span>(<span style="color:#660000;">$v</span>)) {<br/> <span style="color:#f92672;">echo </span><span style="color:#660000;">$k </span><span style="color:#f92672;">. </span><span style="color:#e6db74;">'....'</span>; <span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">输出数组的键</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;font-family:'宋体';"> </span><span style="color:#f92672;">echo </span><span style="color:#66d9ef;font-style:italic;">trim</span>(<span style="color:#660000;">$v</span>) <span style="color:#f92672;">. </span><span style="color:#e6db74;">'<br/>'</span>; <span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">输出数组的值</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;font-family:'宋体';"> </span><span style="color:#660000;">$v </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">trim</span>(<span style="color:#660000;">$v</span>); <span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">可以改变原数组</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#66837f;font-family:'宋体';"> </span>}<br/>});<br/><br/><span style="color:#66837f;background-color:#191f26;">// array_filter() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">过滤数组中所有的偶数 返回被过滤后的数组</span><span style="color:#66837f;font-family:'宋体';"><br/></span>$a <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">array_filter</span>($arr2, <span style="color:#f92672;">function </span>(<span style="color:#660000;">$v</span>) {<br/> <span style="color:#f92672;">if </span>(<span style="color:#660000;">$v </span><span style="color:#f92672;">% </span><span style="color:#ae81ff;">2 </span><span style="color:#f92672;">== </span><span style="color:#ae81ff;">0</span>) {<br/> <span style="color:#f92672;">return false</span>;<br/> } <span style="color:#f92672;">else </span>{<br/> <span style="color:#f92672;">return true</span>;<br/> }<br/>});<br/><br/><span style="color:#66837f;background-color:#191f26;">// array_reduce() </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">返回一维数组的和 如果有的三个参数,则第三个参数将作为运算的的第一个元素</span><span style="color:#66837f;font-family:'宋体';"><br/></span>$arr2 <span style="color:#f92672;">= array</span>(<span style="color:#e6db74;">'1'</span>, <span style="color:#f92672;">false</span>, <span style="color:#ae81ff;">4</span>, <span style="color:#ae81ff;">5</span>, <span style="color:#ae81ff;">6</span>, <span style="color:#ae81ff;">7</span>, <span style="color:#ae81ff;">8</span>);<br/>$a <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">array_reduce</span>($arr2, <span style="color:#f92672;">function </span>(<span style="color:#660000;">$v1</span>, <span style="color:#660000;">$v2</span>) {<br/> <span style="color:#f92672;">return </span><span style="color:#660000;">$v1 </span><span style="color:#f92672;">+ </span><span style="color:#660000;">$v2</span>;<br/>}, <span style="color:#ae81ff;">100</span>);<br/><br/><span style="color:#66837f;background-color:#191f26;">// </span><span style="color:#66837f;background-color:#191f26;font-family:'宋体';">自定义函数计算多维数组的和</span><span style="color:#66837f;font-family:'宋体';"><br/></span><span style="color:#f92672;">function </span><span style="color:#a6e22e;">deep_array_reduce</span>(<span style="color:#660000;">$arr2</span>)<br/>{<br/> <span style="color:#f92672;">return </span><span style="color:#66d9ef;font-style:italic;">array_reduce</span>(<span style="color:#660000;">$arr2</span>, <span style="color:#f92672;">function </span>(<span style="color:#660000;">$v1</span>, <span style="color:#660000;">$v2</span>) {<br/> <span style="color:#f92672;">if </span>(<span style="color:#66d9ef;font-style:italic;">is_array</span>(<span style="color:#660000;">$v1</span>)) {<br/> <span style="color:#660000;">$v1 </span><span style="color:#f92672;">= </span><span style="color:#a6e22e;">deep_array_reduce</span>(<span style="color:#660000;">$v1</span>);<br/> }<br/> <span style="color:#f92672;">if </span>(<span style="color:#66d9ef;font-style:italic;">is_array</span>(<span style="color:#660000;">$v2</span>)) {<br/> <span style="color:#660000;">$v2 </span><span style="color:#f92672;">= </span><span style="color:#a6e22e;">deep_array_reduce</span>(<span style="color:#660000;">$v2</span>);<br/> }<br/> <span style="color:#f92672;">return </span><span style="color:#660000;">$v1 </span><span style="color:#f92672;">+ </span><span style="color:#660000;">$v2</span>;<br/> });<br/>}<br/></pre><p>来源:https://blog.csdn.net/sinat_22319877/article/details/48518393</p>
相关文章