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

我有数组例如


$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',

];

有没有比循环更好的方法来做到这一点?


一只萌萌小番薯
浏览 129回答 3
3回答

慕虎7371278

你可以用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',)

森栏

一种蛮力方法是迭代数组,并将元素分配给适当的目标数组:$translationArray = array();$baseData = array();foreach ($myArray as $key => $value) {    if (preg_match("/^translation_/", $key)) {        $translationArray[$key] = $value;    }    else {        $baseData[$key] = $value;    }}
打开App,查看更多内容
随时随地看视频慕课网APP