为了账号安全,请及时绑定邮箱和手机立即绑定

有没有更好的方法来按特定字符串开头的键拆分数组?

有没有更好的方法来按特定字符串开头的键拆分数组?

PHP
一只萌萌小番薯 2021-07-06 09:04:44
我有数组例如$myArray = [    'id' => 1,    'code' => '1234',    'translation_lang_id' => 3,    'translation_name' => 'Lorem Ipsum',    'translation_description' => 'My content'];现在我需要将它拆分为:首先是所有键和值,其中键开始,translation_然后是休息,所以它最终应该是这样的:$translationArray = [    'translation_lang_id' => 3,    'translation_name' => 'Lorem Ipsum',    'translation_description' => 'My content'];$baseData = [    'id' => 1,    'code' => '1234',];有没有比循环更好的方法来做到这一点?
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

你可以用array_filter与ARRAY_FILTER_USE_KEY标志根据是否与“translation_”与否的关键开始对不同的元素分开:


$translationArray = array_filter($myArray, 

                                 function ($k) { 

                                     return substr($k, 0, 12) == 'translation_'; 

                                 }, ARRAY_FILTER_USE_KEY);

$baseData = array_filter($myArray, 

                         function ($k) { 

                             return substr($k, 0, 12) != 'translation_'; 

                         }, ARRAY_FILTER_USE_KEY);


var_export($translationArray);

var_export($baseData);

输出:


array ( 

  'translation_lang_id' => 3,

  'translation_name' => 'Lorem Ipsum',

  'translation_description' => 'My content', 

)

array (

  'id' => 1,

  'code' => '1234',

)


查看完整回答
反对 回复 2021-07-09
?
森栏

TA贡献1810条经验 获得超5个赞

一种蛮力方法是迭代数组,并将元素分配给适当的目标数组:


$translationArray = array();

$baseData = array();


foreach ($myArray as $key => $value) {

    if (preg_match("/^translation_/", $key)) {

        $translationArray[$key] = $value;

    }

    else {

        $baseData[$key] = $value;

    }

}


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信