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 [名前] => 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
    )

)

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 に答える