【问题标题】:How to compare the multi dimensional array with parallel row and column index in magento?如何将多维数组与magento中的并行行和列索引进行比较?
【发布时间】:2012-12-14 08:56:17
【问题描述】:

嗨,请运行我的代码: 请查看我的预期输出。如何根据我的预期结果调整我的代码。

<?php
$arrayA=array(array("id" => 8, "name" => "test1"),  
            array("id" => 4, "name" => "test2"),  
            array("id" => 4, "name" => "test3")  
);
$arrayB=array(array("id" => 3, "domain_name" => "www.test.com","activation_key" =>"ADKLJ"),
            array("id" => 4,  "domain_name" => "www.yahoomail.com","activation_key" =>"LKLJ"),
            array("id" => 4, "domain_name" => "www.gmail.com","activation_key" =>"OLOLJ")           
);

//$places=Array();
$i=0;
foreach($arrayA as $itemA)
{
    $match=0;

    foreach($arrayB as $itemB)
    {
        if($itemA["id"]==$itemB["id"])
        {
            $arrayA[$i]["domain_name"]=$itemB["domain_name"];
            $arrayA[$i]["activation_key"]=$itemB["activation_key"];
            $match=1;
        }
    }
    if($match==0)
    {
            $arrayA[$i]["domain_name"]="";
            $arrayA[$i]["activation_key"]="";
    }
    $i++;
}
echo "<pre>";
print_r($arrayA);
echo "</pre>";

?>

输出

数组 ( [0] => 数组 ( [id] => 8 [名称] => test1 [域名] => [激活键] => )

[1] => Array
    (
        [id] => 4
        [name] => test2
        [domain_name] => www.gmail.com
        [activation_key] => OLOLJ
    )

[2] => Array
    (
        [id] => 4
        [name] => test3
        [domain_name] => www.gmail.com
        [activation_key] => OLOLJ
    )

)

但我的预期输出是

数组 ( [0] => 数组 ( [id] => 8 [名称] => test1 [域名] => [激活键] => )

[1] => Array
    (
        [id] => 4
        [name] => test2
        [domain_name] => www.yahoomail.com
        [activation_key] => LKLJ
    )

[2] => Array
    (
        [id] => 4
        [name] => test3
        [domain_name] => www.gmail.com
        [activation_key] => OLOLJ
    )

)

【问题讨论】:

    标签: php arrays compare


    【解决方案1】:

    试试下面的方法

    <?php
    $arrayA=array(array("id" => 8, "name" => "test1"),  
                array("id" => 4, "name" => "test2"),  
                array("id" => 4, "name" => "test3")  
    );
    $arrayB=array(array("id" => 3, "domain_name" => "www.test.com","activation_key" =>"ADKLJ"),
                array("id" => 4,  "domain_name" => "www.yahoomail.com","activation_key" =>"LKLJ"),
                array("id" => 4, "domain_name" => "www.gmail.com","activation_key" =>"OLOLJ")           
    );
    
    //$places=Array();
    $i=0;
    foreach($arrayA as $key => $itemA)
    {
        $match=0;
        $itemB = $arrayB[$key]; 
            if($itemA["id"]==$itemB["id"])
            {
                $arrayA[$i]["domain_name"]=$itemB["domain_name"];
                $arrayA[$i]["activation_key"]=$itemB["activation_key"];
                $match=1;
            }
        if($match==0)
        {
                $arrayA[$i]["domain_name"]="";
                $arrayA[$i]["activation_key"]="";
        }
        $i++;
    }
    echo "<pre>";
    print_r($arrayA);
    echo "</pre>";
    
    ?>
    

    工作样本:http://codepad.org/mrBqqeli

    【讨论】:

    • 欢迎您。很高兴为您接受答案。它会增加更改以获得更多问题的答案
    【解决方案2】:
    // store all activated domains
    $activated = array();
    
    foreach($arrayA as $key => $itemA)
    {
        $match=0;
    
        foreach($arrayB as $itemB)
        {
            if($itemA["id"]==$itemB["id"] && !in_array($itemB["domain_name"],$activated))
            {
                $arrayA[$key]["domain_name"]=$itemB["domain_name"];
                $arrayA[$key]["activation_key"]=$itemB["activation_key"];
                $match=1;
                $activated[] = $itemB["domain_name"];
                break;
            }
        }
        if($match==0)
        {
                $arrayA[$key]["domain_name"]="";
                $arrayA[$key]["activation_key"]="";
        }
    }
    echo "<pre>";
    print_r($arrayA);
    echo "</pre>";
    

    【讨论】:

    • 欢迎您,当一个问题解决后,您会在回复中看到一个绿色标记,点击它接受答案,如果您接受答案,您将来会得到更多帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2017-02-18
    • 2013-09-25
    • 2018-06-28
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    相关资源
    最近更新 更多