比较两个array_count_values阵列 - 键和值-PHP



我正在计算数组的元素,并使用array_count_values将结果存储在数组中。

让我们考虑一下这是此实例的输出,该输出是由数组创建的,该数组是在爆炸的帮助下创建的。

magazine = Array(
    [avatar] => 1
    [essence] => 6
    [pie] => 1
    [multiplex] => 1
    [bill] => 2
    [nice] => 2
    [pie ] => 1
) 
ransom = Array(
    [multiplex] => 1
    [pie] => 2
    [avatar] => 3
    [bill] => 1
    [nice] => 3
    [essence] => 1
)

现在,我想检查数组赎金中的元素是否在Array Magazine中可用。循环应退出,如果赎金中的元素在杂志中不可用。(或)如果元素的存在,则该元素在赎金中的值不能大于杂志中的相同元素值。

我该如何实现?在这种情况下,如何使用嵌套的foreach?因为我无法在此处使用简单的循环。

$ransom_temp = "avatar essence pie multiplex bill nice essence nice bill essence essence essence essence pie"
$magazine_temp = "multiplex pie pie avatar bill nice nice nice avatar essence avatar"
$magazine = explode(" ",$magazine_temp);
$ransom = explode(" ",$ransom_temp);
$countRan = array_count_values($ransom);
$countMag = array_count_values($magazine);
print_r($countMag);
print "<br>";
print_r($countRan);
if($n > $m){
    print "No";
    return;
}
foreach($countRan as $key1=>$value1){
    foreach($countMag as $key2=>$value2)
    if($key1 != $key2) || $value1 > $value2){
        print "No";
        return;
    }   
}
print "Yes";

您只需要一个循环:

$ransom_temp = "avatar essence pie multiplex bill nice essence nice bill essence essence essence essence pie"
$magazine_temp = "multiplex pie pie avatar bill nice nice nice avatar essence avatar"
$magazine = explode(" ",$magazine_temp);
$ransom = explode(" ",$ransom_temp);
$countRan = array_count_values($ransom);
$countMag = array_count_values($magazine);
print_r($countMag);
print "<br>";
print_r($countRan);
if(count($countRan) > count($countMag)) {
    print "No";
    return;
}
foreach ($countRan as $key => $value){
    // exit if key not exists in $countMag array
    // or exit if value in $countRan[$key] greater than $countMag[$key]
    if (!array_key_exists($key, $countMag) || $value > $countMag[$key]) {
        print "No";
        return;
    }
}
print "Yes";

最新更新