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 $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 [name] => test1 [domain_name] => [activation_key] =>)

[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 [name] => test1 [domain_name] => [activation_key] =>)

[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
    )

)

4

2 回答 2

0
// 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>";
于 2012-12-14T09:24:34.167 回答
0

尝试以下方式

<?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

于 2012-12-14T09:04:11.583 回答