2016-09-26 95 views
0

這是我的數組看起來像:如何刪除存在從對象的數組中的項?

array(3) { 
    [0]=> 
    string(3) "600" 
    [1]=> 
    string(3) "601" 
    [2]=> 
    string(3) "603" 
} 

這是我的目標看起來像:

array(7) { 
    [0]=> 
    object(stdClass)#688 (6) { 
    ["id"]=> 
    string(3) "601" 
    ["name"]=> 
    string(10) "test8opkpo" 
    ["avatar"]=> 
    string(85) "http://avatars/user/medium.png" 

    ["url"]=> 
    string(86) "/index.php" 

    ["isOnline"]=> 
    int(0) 
    ["lastseen"]=> 
    string(11) "2 weeks ago" 
    } 
    [1]=> 
    object(stdClass)#689 (6) { 
    ["id"]=> 
    string(3) "604" 
    ["name"]=> 
    string(6) "nopita" 
    ["avatar"]=> 
    string(85) "http://avatars/user/medium.png" 

    ["url"]=> 
    string(82) "/index.php" 
    ["isOnline"]=> 
    int(0) 
    ["lastseen"]=> 
    string(10) "1 week ago" 
    } 
    [2]=> 
    object(stdClass)#690 (6) { 
    ["id"]=> 
    string(3) "603" 
    ["name"]=> 
    string(6) "test_b" 
    ["avatar"]=> 
    string(85) "http://avatars/user/medium.png" 

    ["url"]=> 
    string(82) "/index.php" 
    ["isOnline"]=> 
    int(0) 
    ["lastseen"]=> 
    string(11) "6 hours ago" 
    } 

現在我想從對象中刪除,每個項目的編號匹配數組內的值。

的對象所以最終的輸出不應該包含的ID是呈現給在數組中。怎麼做?

我嘗試使用array_diff_keyunset無濟於事。

$contactArray[$i]表示每個ID在對象

if (in_array($contactArray[$i], $array)) { 
    $a = array_diff_key($results->contacts, [$i => $contactArray[$i]]); 
} 

回答

1

我創造了我自己的一套例子來模擬要在發生什麼你的陣列:

$x = array('600','601', '603'); 
$y = array(
    array("id" => "600", 
      "name" => "test", 
      "avatar" => "image" 
     ), 
    array("id" => "601", 
      "name" => "test1", 
      "avatar" => "image1" 
     ), 
    array("id" => "602", 
      "name" => "test2", 
      "avatar" => "image2" 
     ), 
    array("id" => "603", 
      "name" => "test3", 
      "avatar" => "image3" 
     ), 
    array("id" => "604", 
      "name" => "test4", 
      "avatar" => "image4" 
     ) 
); 



echo '<pre>'; 
    var_dump($y); 
echo '</pre>'; 

$new_arr_ = array(); 
for($i = 0, $ctr = count($y); $i < $ctr; $i++) { 
    if(!in_array($y[$i]["id"], $x)) { 
     $new_arr_[] = array($y[$i]["id"], $y[$i]["name"], $y[$i]["avatar"]); 
    } 
} 

echo '<pre>'; 
    var_dump($new_arr_); 
echo '</pre>'; 

希望它有幫助。

+0

@thanks很多它的工作原理 – 112233

0

如果我理解正確,下面應該工作:

$contactArray = array_filter($contactArray, function ($v) use ($array) { 
     return !in_array(isset($v->id)?$v->id:null, $array); 
}); 
+0

我得到這個錯誤語法錯誤,意外「)」在這條線:返回_......可能我想返回的對象存儲到變量 – 112233

+0

是的,我已經無法正常平衡它們。立即嘗試 – apokryfos