php – 如何正确处理数组?

前端之家收集整理的这篇文章主要介绍了php – 如何正确处理数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有两个数组:
$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);

猜你在找的PHP相关文章