循环遍历2个数组,获取一个值的开头,并将其与第二个数组中的键匹配


loop throught 2 arrays and grab the beginning of a value and match it to a key in the second array

大家好,我有一个数组,比如

 $return = array(
    'GPPZ20'=>'5.00',
    'GPPZ45'=>'10.00',
    'GPPZ75'=>'15.00',
    'GPPZH20'=>'5.00',
);

也有一个数组

 [0] => Array
    (
        [main_company] => Marketing
        [code] => GPPZH20XSYDLDJ
        [company] => All Companies
    )
[1] => Array
    (
        [main_company] => Some Company
        [code] => XHJDOJSHHJYD
        [company] => All Companies
    )

等等

我需要做的是从第二个数组中获取代码值,并检查前几个字符是否与返回数组中的任何字符匹配,如果匹配,则从返回数组中获取值。

我可以指定前5个字符或6个字符,因为返回数组中的键可以是任何数字,但它们总是代码的开头。

你所需要的是

foreach ( $data as $v ) {
    foreach ( $return as $k => $f ) {
        if (strpos($v['code'], $k) === 0) {
            printf("%s %s %f 'n", $v['main_company'], $v['code'], $f);
        }
    }
}

输出
Marketing GPPZH20XSYDLDJ 5.000000

假设您已经从第二个数组中获得了一个代码值,则截断它的第一部分。

$code = $array[0]['code'];
$str = substr($code, 0, 5);
foreach($return as $key=>$element){
    if($key==$str){
         echo $element;
    }
}