php – 如何正确处理数组?
发布时间:2020-12-13 16:35:06 所属栏目:PHP教程 来源:网络整理
导读:有两个数组: $arr1 = ['word','tech','care','kek','lol','wild','regex'];$arr2 = ['ord','ek','ol','ld','gex','ss']; 第二个数组中的元素数小于或等于第一个数组. 排序第一个数组和第二个数组,如果第二个数组的元素包含在第一个数组的元素的末尾,则以这
有两个数组:
$arr1 = ['word','tech','care','kek','lol','wild','regex']; $arr2 = ['ord','ek','ol','ld','gex','ss']; 第二个数组中的元素数小于或等于第一个数组. 排序第一个数组和第二个数组,如果第二个数组的元素包含在第一个数组的元素的末尾,则以这种形式对数组进行排序: Array ( [0] => w_ord [1] => tech [2] => care [3] => k_ek [4] => l_ol [5] => wi_ld [6] => re_gex ) 重要提示:第??二个数组的元素永远不会重复,并且可以按任何顺序排列.如果在第二个元素中没有第一个数组的元素的结尾,则设置第一个数组的元素的值. 我这样做: foreach($arr2 as $val) { $strrepl[$val] = "_".$val; } foreach($arr1 as $key => $val) { $arr3[$key] = str_replace(array_keys($strrepl),$strrepl,$val); } print_r($arr3); 但我不确定这是正确的做法,你会建议什么?
嗯,让我们看看…纯粹的功能’因为你知道:D
function ends($str) { return function($suffix) use($str) { return mb_strlen($str) >= mb_strlen($suffix) && mb_substr($str,mb_strlen($suffix) * -1) === $suffix; }; } $result = array_map(function($item) use($arr2) { $filter = ends($item); $suffixes = array_filter($arr2,$filter); if (empty($suffixes)) { return $item; } // This only cares about the very first match,but // is easily adaptable to handle all of them $suffix = reset($suffixes); return mb_substr($item,mb_strlen($suffix) * -1) . "_{$suffix}"; },$arr1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |