php快速处理元素数组函数

      发布在:后端技术      评论:0 条评论
<pre style="background-color:#262e37;color:#ffffff;font-family:&#39;Consolas&#39;;font-size:11.3pt;"><span style="color:#f92672;">&lt;?php<br/></span>$arr <span style="color:#f92672;">= array</span>(<span style="color:#e6db74;">&#39;b&#39; </span><span style="color:#f92672;">=&gt; </span>[<span style="color:#e6db74;">&#39;c&#39; </span><span style="color:#f92672;">=&gt; </span><span style="color:#e6db74;">&#39; d &#39;</span>]);<br/><span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">利用四个</span><span style="color:#66837f;background-color:#191f26;">php</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">系统函数快速处理数组的每个元素:</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;"><br/></span><span style="color:#66837f;background-color:#191f26;">// &nbsp; &nbsp;array_map(); &nbsp; &nbsp; &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">返回用户自定义函数作用后的数组</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;background-color:#191f26;">// &nbsp; &nbsp;array_walk(); &nbsp; &nbsp; &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">对数组中的每个元素应用回调函数。</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;background-color:#191f26;">// &nbsp; &nbsp;array_filter(); &nbsp; &nbsp; &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">用回调函数过滤数组中的元素</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;background-color:#191f26;">// &nbsp; &nbsp;array_reduce(); &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">用回调函数迭代地将数组简化为单一的值</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;background-color:#191f26;">/*<br/></span><span style="color:#66837f;background-color:#191f26;"> &nbsp; &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">总结:</span><span style="color:#66837f;background-color:#191f26;">array_map() &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">和</span><span style="color:#66837f;background-color:#191f26;">array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">区别</span><span style="color:#66837f;background-color:#191f26;"><br/></span><span style="color:#66837f;background-color:#191f26;"> &nbsp; &nbsp;1.array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">注重结果</span><span style="color:#66837f;background-color:#191f26;"> &nbsp; array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">注重过程</span><span style="color:#66837f;background-color:#191f26;"><br/></span><span style="color:#66837f;background-color:#191f26;"> &nbsp; &nbsp;2.</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">返回值:</span><span style="color:#66837f;background-color:#191f26;">array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">返回数组处理后的数组,</span><span style="color:#66837f;background-color:#191f26;">array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">返回</span><span style="color:#66837f;background-color:#191f26;">bollean<br/></span><span style="color:#66837f;background-color:#191f26;"> &nbsp; &nbsp;3.array_map() &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">不改变原数组</span><span style="color:#66837f;background-color:#191f26;"> &nbsp;array_walk()</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">用</span><span style="color:#66837f;background-color:#191f26;">&amp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">引用可以改变原数组</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;">// &nbsp; &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">利用</span><span style="color:#66837f;background-color:#191f26;">array_map() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">快速清除一维数组的每个元素两边的空格</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66d9ef;font-style:italic;">array_map</span>(<span style="color:#e6db74;">&#39;trim&#39;</span>, $arr);<br/><br/><span style="color:#66837f;background-color:#191f26;">// &nbsp; &nbsp;</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">自定义函数:快速清除多维维数组的每个元素两边的空格 封装成函数</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;">&amp;</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;">// &nbsp; &nbsp;array_walk() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">输出数组的键和值,并且改变原数组 &nbsp;返回</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;">&#39;....&#39;</span>; <span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">输出数组的键</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;font-family:&#39;宋体&#39;;"> &nbsp; &nbsp; &nbsp; &nbsp;</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;">&#39;&lt;br/&gt;&#39;</span>; <span style="color:#66837f;background-color:#191f26;">//</span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">输出数组的值</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;font-family:&#39;宋体&#39;;"> &nbsp; &nbsp; &nbsp; &nbsp;</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:&#39;宋体&#39;;">可以改变原数组</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span><span style="color:#66837f;font-family:&#39;宋体&#39;;"> &nbsp; &nbsp;</span>}<br/>});<br/><br/><span style="color:#66837f;background-color:#191f26;">// &nbsp; &nbsp;array_filter() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">过滤数组中所有的偶数 &nbsp;返回被过滤后的数组</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><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;">// &nbsp; &nbsp;array_reduce() </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">返回一维数组的和 &nbsp;如果有的三个参数,则第三个参数将作为运算的的第一个元素</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><br/></span>$arr2 <span style="color:#f92672;">= array</span>(<span style="color:#e6db74;">&#39;1&#39;</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;">// &nbsp; </span><span style="color:#66837f;background-color:#191f26;font-family:&#39;宋体&#39;;">自定义函数计算多维数组的和</span><span style="color:#66837f;font-family:&#39;宋体&#39;;"><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>
相关文章
热门推荐