首頁 > 後端開發 > php教程 > array_map/array_filter/array_walk遍歷陣列的方式和foreach一樣,誰要快一些啊?

array_map/array_filter/array_walk遍歷陣列的方式和foreach一樣,誰要快一些啊?

WBOY
發布: 2016-10-22 00:14:25
原創
1497 人瀏覽過

array_walk相當於foreach:

<code>$arr = ['Client'=>'jQuery','Server'=>'PHP'];
array_walk($arr, function($v, $k) {
    echo "键:$k 值:$v\n";
});</code>
登入後複製
登入後複製

例如去除數組$arr元素的前後空白:

<code>array_walk($arr, function(&$v) { $v = trim($v); });
foreach($arr as &$v) { $v = trim($v); }
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组

var_export(
    array_filter([1, 2, 3], function($v) {
        return $v > 1;
    })
);
和
foreach([1, 2, 3] as $k => $v) {
    if($v > 1) {
        $tmp[$k] = $v;
    }
}
var_export($tmp);
都输出:
array (
  1 => 2,
  2 => 3,
)</code>
登入後複製
登入後複製

PHP數組映射化簡(MapReduce):

<code>array_map/array_reduce
array_map: 将回调函数作用到给定数组的单元上
var_export(
    array_map(function ($v) {
        return $v * $v;
    }, [1, 2, 3])
);
和
foreach([1, 2, 3] as $v) {
    $tmp[] = $v * $v;
}
var_export($tmp);
都输出:
array (
  0 => 1,
  1 => 4,
  2 => 9,
)</code>
登入後複製
登入後複製

array_reduce: 用回呼函數迭代地將數組簡化(reduce)為單一的值
//輸出16,即10+1+2+3,其中10作為初始值.

<code>echo array_reduce([1, 2, 3], function($result, $item) {
    $result = $result + $item;
    return $result;
}, 10);
用foreach表达:
$result = 10;
foreach([1, 2, 3] as $v) {
    $result = $result + $v;
}
echo $result;</code>
登入後複製
登入後複製

執行效果都一樣,但是具體的用函數快還是用foreach快些啊

回覆內容:

array_walk相當於foreach:

<code>$arr = ['Client'=>'jQuery','Server'=>'PHP'];
array_walk($arr, function($v, $k) {
    echo "键:$k 值:$v\n";
});</code>
登入後複製
登入後複製

例如去除數組$arr元素的前後空白:

<code>array_walk($arr, function(&$v) { $v = trim($v); });
foreach($arr as &$v) { $v = trim($v); }
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组

var_export(
    array_filter([1, 2, 3], function($v) {
        return $v > 1;
    })
);
和
foreach([1, 2, 3] as $k => $v) {
    if($v > 1) {
        $tmp[$k] = $v;
    }
}
var_export($tmp);
都输出:
array (
  1 => 2,
  2 => 3,
)</code>
登入後複製
登入後複製

PHP數組映射化簡(MapReduce):

<code>array_map/array_reduce
array_map: 将回调函数作用到给定数组的单元上
var_export(
    array_map(function ($v) {
        return $v * $v;
    }, [1, 2, 3])
);
和
foreach([1, 2, 3] as $v) {
    $tmp[] = $v * $v;
}
var_export($tmp);
都输出:
array (
  0 => 1,
  1 => 4,
  2 => 9,
)</code>
登入後複製
登入後複製

array_reduce: 用回呼函數迭代地將數組簡化(reduce)為單一的值
//輸出16,即10+1+2+3,其中10作為初始值.

<code>echo array_reduce([1, 2, 3], function($result, $item) {
    $result = $result + $item;
    return $result;
}, 10);
用foreach表达:
$result = 10;
foreach([1, 2, 3] as $v) {
    $result = $result + $v;
}
echo $result;</code>
登入後複製
登入後複製

執行效果都一樣,但是具體的用函數快還是用foreach快些啊

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板