摘要:前言我自己用此類(lèi)回調(diào)函數(shù),來(lái)替代純粹是用為代碼的簡(jiǎn)潔性,讓代碼更好看。我有點(diǎn)代碼小潔癖當(dāng)?shù)幚硪粋€(gè)一維索引數(shù)組時(shí),在回調(diào)函數(shù)內(nèi)是無(wú)法獲取到當(dāng)時(shí)元素索引的。目的在回調(diào)體內(nèi)獲取迭代關(guān)聯(lián)數(shù)組的下標(biāo)值。
前言:我自己用此類(lèi)回調(diào)函數(shù),來(lái)替代 foreach 純粹是用為代碼的簡(jiǎn)潔性,讓代碼更好看。(我有點(diǎn)代碼小潔癖~)
1、array_reduce
當(dāng)?shù)幚硪粋€(gè)一維索引數(shù)組時(shí),在回調(diào)函數(shù)內(nèi)是無(wú)法獲取到當(dāng)時(shí)元素索引的。所以想要獲取時(shí),需得借助一個(gè)外部變量。
目的:把 $arr 遍歷到 標(biāo)簽內(nèi)(就是拼接option字符串)
$arr = [ 0 => "全部", 1 => "a", 2 => "b", 3 => "c", ];
解決:
$index = 0; $options = array_reduce($data, function($carry, $item) use (&$index){ ## $index則為當(dāng)前兩個(gè)元素 $item 的索引 return $carry . ""; }, ""); var_dump($options);
輸出為
2、array_map(callable $callback , array $array1 [, array $... ] )
很多情況下,迭代的數(shù)據(jù)一般為一個(gè) 二維關(guān)聯(lián)數(shù)組,但 array_map 本身在回調(diào)函數(shù)的函數(shù)體內(nèi)無(wú)法獲取到 關(guān)聯(lián)數(shù)組的下標(biāo) 的。
目的:在回調(diào)體內(nèi)獲取迭代關(guān)聯(lián)數(shù)組的下標(biāo)值。
解決:可以把關(guān)聯(lián)數(shù)組的下標(biāo)通過(guò) array_map()的第三個(gè)形參把下標(biāo)傳進(jìn)去。
$arr = [ "a" => 1, "b" => 2, "c" => 3 ]; $res = array_map(function($item, $key){ echo "$arr[" . $key . "]=" . $item . "
"; }, $arr, array_keys($arr));
輸出結(jié)果為
$arr[a]=1 $arr[b]=2 $arr[c]=3
題外話,有個(gè)典型的應(yīng)用,也可以這樣用。打個(gè)比方,如入庫(kù)商品。
辣條 [spec] => Array ( ["attr"] => Array ( [0] => 顏色 [1] => 口感 [2] => 副作用 ) ["value"] => Array ( [0] => 紅色 [1] => 辣 [2] => The `菊花` is hot ) ) ) */ ## 處理規(guī)格信息,使其可以批量添加 $arr["spec"] = array_map(function($item, $key){ return [ "attr" => $key, "value" => $item, ]; }, $arr["spec"]["value"], $arr["spec"]["attr"]); print_r($arr); /* Array ( [goods] => 辣條 [spec] => Array ( [0] => Array ( [attr] => 顏色 [value] => 紅色 ) [1] => Array ( [attr] => 口感 [value] => 辣 ) [2] => Array ( [attr] => 副作用 [value] => The `菊花` is hot ) ) ) */ # 這樣處理好數(shù)組就特別方便,數(shù)組中 `商品的規(guī)格` 的就可以批量添加了 參考資料:laravel框架代碼 - 集合 的封裝 -> 傳送門(mén)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29262.html
摘要:李尋歡索引數(shù)組索引數(shù)組,元素的值和下標(biāo)不存在邏輯關(guān)系,而下標(biāo)只表示值索引位置。鍵和值,同時(shí)向下移動(dòng)指針獲得元素信息,返回的是,關(guān)聯(lián)和索引數(shù)組其中關(guān)聯(lián)數(shù)組部分。 數(shù)組 數(shù)據(jù)由元素組成,元素由鍵和值組成 數(shù)組分類(lèi) 關(guān)聯(lián)數(shù)組關(guān)聯(lián)數(shù)組,元素的下標(biāo)與元素的值存在邏輯上的關(guān)系,稱(chēng)之為關(guān)聯(lián)數(shù)組。指的是,鍵和值之間存在管理。 $a1 = array(name => 李尋歡, age => 34); ...
摘要:中對(duì)多維數(shù)組特定列的提取,是個(gè)很常用的功能,正因?yàn)槿绱?,在版本之后,添加了一個(gè)專(zhuān)用的函數(shù)。變種方法如下,意為把數(shù)組的每一項(xiàng)值的開(kāi)頭值移出,并獲取移除的值作為新數(shù)組。注意此時(shí)新數(shù)組的鍵仍是原數(shù)組的鍵,如下。 PHP中對(duì)多維數(shù)組特定列的提取,是個(gè)很常用的功能,正因?yàn)槿绱?,PHP在5.5.0版本之后,添加了一個(gè)專(zhuān)用的函數(shù)array_column()。當(dāng)然,如果你的PHP版本低于5.5.0,就...
摘要:額外的數(shù)組元素可以象下面這樣追加如果你正在處理數(shù)字索引數(shù)組,你可能想使用顯示命名的函數(shù)前置和追加元素,如和函數(shù),但這些函數(shù)不能操作關(guān)聯(lián)數(shù)組。 在使用 PHP 進(jìn)行開(kāi)發(fā)的過(guò)程中,或早或晚,您會(huì)需要?jiǎng)?chuàng)建許多相似的變量,這時(shí)候你可以把數(shù)據(jù)作為元素存儲(chǔ)在數(shù)組中。數(shù)組中的元素都有自己的 ID,因此可以方便地訪問(wèn)它們。 關(guān)聯(lián)數(shù)組 關(guān)聯(lián)數(shù)組,它的每個(gè) ID 鍵都關(guān)聯(lián)一個(gè)值。在存儲(chǔ)有關(guān)具體命名的值的數(shù)...
摘要:遍歷完成后返回一個(gè)新的數(shù)組你可以同時(shí)處理多個(gè)數(shù)組你好嗎原罪你好嗎原罪是的,遍歷的次數(shù)以最長(zhǎng)的數(shù)組為準(zhǔn)。假如你處理的是二維數(shù)組,處理方式也是萬(wàn)變不離其宗的。 在PHP的日常操作中,數(shù)組是最常出現(xiàn)的結(jié)構(gòu),而我們幾乎每天都在處理數(shù)組相關(guān)的內(nèi)容。那么問(wèn)題來(lái)了,你一般怎么遍歷并處理數(shù)組。 1、foreach 很熟悉吧,是不是你的最?lèi)?ài)? $arr = [a, b, c]; foreach ($a...
摘要:說(shuō)明獲取數(shù)組中部分的或者所有的鍵名說(shuō)明為數(shù)組的每個(gè)元素應(yīng)用回調(diào)函數(shù)說(shuō)明合并一個(gè)或者多個(gè)數(shù)組說(shuō)明對(duì)多個(gè)數(shù)組或者多維數(shù)組進(jìn)行排序具體可查看官網(wǎng)說(shuō)明彈出數(shù)組中最后一個(gè)單元說(shuō)明計(jì)算數(shù)組中所有值的乘積之前因?yàn)橐恍┦?,就沒(méi)有每天都更,以后會(huì)堅(jiān)持保持 2019-02-27 array_keys() array_keys ( array $array [, mixed $search_value = ...
閱讀 2172·2021-10-08 10:04
閱讀 3213·2021-09-22 10:02
閱讀 2534·2019-08-30 15:56
閱讀 931·2019-08-30 15:54
閱讀 1030·2019-08-30 15:54
閱讀 1395·2019-08-30 15:53
閱讀 2625·2019-08-30 11:21
閱讀 3687·2019-08-30 10:56