简体   繁体   English

根据列表php提取选定的数组值

[英]extract selected array values based on list php

I have a list of array keys in form of a string 我有一个字符串形式的数组键列表

"hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek"

Now, want to extract only those values, ie $myarray['hasAddstrict'] should become $hasAddStrict, etc. 现在,只想提取那些值,即$ myarray ['hasAddstrict']应该变成$ hasAddStrict,依此类推。

Is there a short way to do it? 有没有捷径可做? My rather dirty solution: 我比较肮脏的解决方案:

$ff = explode(',' ,"hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek");
    foreach ( $ff   as $key){   $ff[$key] =    $SERVICE[$key]  ;    }
    extract($ff);

I agree with Jeff that there isn't really a better way, and that keeping the variables as an array is probably a better idea, but you could wrap it up in a function for convenience (tested in php 5.6): 我同意Jeff的观点,实际上并没有更好的方法,将变量保持为数组可能是一个更好的主意,但是为了方便起见,可以将其包装在一个函数中(在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"));

When tested as follows: 当进行如下测试时:

$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);

You get output: 您得到输出:

int(123)
int(456)
int(789)
string(3) "abc"
string(3) "def"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM