2015-02-24 70 views
2

嗨我想從另一個數組中刪除一個數組的結果並將結果存儲爲一個逗號分隔的字符串列表。PHP array_diff()轉換爲字符串

這是我的代碼至今:

function bpdev_include_users(){ 
//list of users to exclude 

global $wpdb; 
$frndsof = array(); 
$frnds = array(); 
$result = array(); 
$friendsid = array(); 

$currentuser_id = get_current_user_id(); 
echo $currentuser_id; 
?><br /> 
<?php 

$sql= "SELECT friend_user_id FROM wp_bp_friends WHERE initiator_user_id='".$currentuser_id."' AND is_confirmed = 1"; 
$friendsid = $wpdb->get_results($sql); 
print_r($friendsid); 
?><br /> 
<?php 
$myexcluded_users=array(); 
foreach($friendsid as $oneitem){ 
    $myexcluded_users[]=$oneitem->friend_user_id; 
} 
$excluded_user =implode(", ",$myexcluded_users); 
echo $excluded_user; 
?><br /> 
<?php 

foreach ($friendsid as $row) 
{ 
$sql1= "SELECT friend_user_id FROM wp_bp_friends WHERE initiator_user_id='".$row->friend_user_id."' AND is_confirmed = 1"; 
$ffid = $wpdb->get_results($sql1); 
print_r($ffid); 
?><br /> 
<?php 
} 

更多代碼(對不起怪異的格式問題...)

$my_users = array();foreach($ffid as $oneitem){ 
    $my_users[]=$oneitem->friend_user_id; 
} 
$my_user =implode(", ",$my_users); 
echo $my_user; 


$sql2= "SELECT user_id FROM wp_bp_xprofile_data"; 
$users = $wpdb->get_results($sql2); 



$result = array_merge($friendsid, $ffid); 


//$excluded_user = array_diff($users , $result); //comma separated ids of users whom you want to exclude 

} 


bpdev_include_users(); 

我試圖用落得是

$excluded_user = 1, 2, 3, 4; 

目前我在array_diff階段出現錯誤:類stdClass的對象無法轉換爲字符串

這是從上面的代碼輸出

陣列([0] => stdClass的對象([friend_user_id] => 54)[1] => stdClass的對象([friend_user_id] = > 48)[2] => stdClass的對象([friend_user_id] => 61))

54,48,61

陣列([0] => stdClass的對象([friend_user_id] => 62)[ 1] => stdClass Object([friend_user_id] => 51)[2] => stdClass Object([friend_user_id] => 60)[3] => stdClass Object([frien數組([0] => stdClass對象([friend_user_id] => 43)[1] => stdClass對象([friend_user_id] => 65)[4] => stdClass對象([friend_user_id] => 56)) ] => 50)[2] => stdClass Object([friend_user_id] => 64)[3] => stdClass Object([friend_user_id] => 45)[4] => stdClass Object([friend_user_id] => 44) ) 陣列([0] => stdClass的對象([friend_user_id] => 57))

預先感謝任何幫助!

+0

你確定它應該是$ FFID = $ wpdb-> get_results($ SQL1),而不是FFID $ = $ wpdb-> get_results($ SQL1)?(連接) – Maximus2012 2015-02-24 17:35:28

回答

1

您需要訪問stdClass已經在數組中。

$myexcluded_users=array(); 
foreach($excluded_user as $oneitem){ 
    $myexcluded_users[]=$oneitem->friend_user_id; 
} 
$excluded_user =implode(", ",$myexcluded_users); 

編輯

所以這條線

$excluded_user = array_diff($users , $result); //comma separated ids of users whom you want to exclude

既$用戶和$結果是具有內他們stdClass的陣列?

這個怎麼樣?

$usersarray =array(); 
foreach($users as $oneitem){ 
    $usersarray[]=$oneitem->friend_user_id; 
} 

$resultarray =array(); 
foreach($result as $oneitem){ 
    $resultarray[]=$oneitem->friend_user_id; 
} 

$excluded_user = array_diff($usersarray , $resultarray); 
$excluded_user =implode(", ",$excluded_user); 
+0

這看起來目前最有前途...... – 2015-02-24 18:08:02

+0

感謝您的建議 - 我認爲它肯定會讓我在正確的方向。我已經編輯了原始問題,以反映我如何試圖實現這個 – 2015-02-24 18:39:58

+0

我很困惑你的編輯。我發佈的代碼片段需要添加到'$ excluded_user = array_diff($ users,$ result)後面的底部。 //逗號分隔您想要排除的用戶的ID '它取得您在$ excluded_user中獲得的當前結果並將其格式化爲您想要的輸出。 – 2015-02-24 18:42:59

1

您可以使用implode()達到此目的。該函數將使用您指定的字符串分隔數組。看看這個reference使用下面的代碼

echo implode(", ", array("HELLO", "WORLD", "lan", "Butler")); // Will Seprate the array 

希望這有助於你

+0

也給出了錯誤對象的類stdClass無法轉換爲字符串 – 2015-02-24 17:46:39