簡體   English   中英

數組重映射-我可以做得更好嗎?

[英]Array remapping - Can I do this better?

對於初學者,我有以下數組對象(id,foo和bar是數據庫查詢的結果,應作為對象變量->id進行尋址)

array([0] => array([id] => 1, [foo] => 'a'), [1] => array([id] => 2, [foo] => 'b')

array([0] => array([id] => 1, [bar] => 'b'), [1] => array([id] => 2, [bar] => 'a')

我想用id列作為鍵創建一個新數組

array([1] => array([foo] => 'a', [bar] => 'b'), [2] => array([foo] => 'b', [bar] => 'a')

我使用以下幾行代碼來創建所需的數組:

foreach($array1 as $row1) {
   $newArray1[$row1->id] = $row1;
}

foreach($array2 as $row2) {
    $newArray2[$row2->id] = $row2;
}

foreach($array2 as $key => row3) { //array 2 is always longer or equal to array 1
    $result[$key]['bar'] = $newArray2[$key]->bar;
    if (isset($newArray1[$key])) {
         $result[$key]['foo'] = $newArray1[$key]->foo;
    } else {
         $result[$key]['bar'] = 0;
    }
}

我認為這樣做可以容易得多。 是這樣嗎?

如果我理解您需要使用“ id”字段作為索引合並兩個數組,那么這兩個數組相等。 我會這樣做:

$newarray = array();
for($i=0;$i<count($array1);$i++)
    $newarray[$array1[$i]["id"]] = array($array1[$i]["foo"], $array2[$i]["bar"]);

而不是創建新的數組,您可以這樣做:

$arr1=array('0' => array('id' => 1, 'foo' => 'a'), '1' => array('id' => 2, 'foo' => 'b'));

$arr2=array('0' => array('id' => 1, 'bar' => 'b'), '1' => array('id' => 2, 'bar' => 'a'));
for($i=0;$i<count($arr1);$i++){
    $arr1[$i] = array("foo"=>$arr1[$i]["foo"], "bar"=>$arr2[$i]["bar"]);

}
print_r($arr1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM