基于列表php提取选定的数组值

问题描述 投票:1回答:1

我有一个字符串形式的数组键列表

"hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek"

现在,想要只提取那些值,即$ myarray ['hasAddstrict']应该变为$ hasAddStrict等。

有一个简短的方法吗?我相当脏的解决方案:

$ff = explode(',' ,"hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek");
    foreach ( $ff   as $key){   $ff[$key] =    $SERVICE[$key]  ;    }
    extract($ff);
php arrays extract partial
1个回答
0
投票

我同意杰夫认为没有更好的方法,并且将变量保持为数组可能是一个更好的主意,但为了方便起见,你可以将它包装在一个函数中(在php 5.6中测试):

<?php

function array_extract(array $assoc_array, $keys_list)
{
    return array_intersect_key($assoc_array, array_flip(explode(',', $keys_list)));
}

extract(array_extract($SERVICE, "hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek"));

测试时如下:

$SERVICE = [
    'hasAddStrict' => 123,
    'freqItems' => 456,
    'freqAmount' => 789,
    'freqUnit' => 'abc',
    'freqFirstDayOfWeek' => 'def',
];

extract(array_extract($SERVICE, "hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek"));

var_dump($hasAddStrict, $freqItems, $freqAmount, $freqUnit, $freqFirstDayOfWeek);

你得到输出:

int(123)
int(456)
int(789)
string(3) "abc"
string(3) "def"
© www.soinside.com 2019 - 2024. All rights reserved.