2015-02-24 6 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 не может быть преобразован в строку

Это выход из приведенного выше кода

Array ([0] => StdClass объекта ([friend_user_id] => 54) [1] => StdClass объекта ([friend_user_id] = > 48) [2] => StdClass объекта ([friend_user_id] => 61))

54, 48, 61

Array ([0] => StdClass объекта ([friend_user_id] => 62) [ 1] => stdClass Object ([friend_user_id] => 51) [2] => stdClass Object ([friend_user_id] => 60) [3] => stdClass Object ([frien d_user_id] => 65) [4] => stdClass Object ([friend_user_id] => 56)) Array ([0] => stdClass Object ([friend_user_id] => 43) [1] => stdClass Object ([friend_user_id] ] => 50) [2] => stdClass Object ([friend_user_id] => 64) [3] => stdClass Object ([friend_user_id] => 45) [4] => stdClass Object ([friend_user_id] => 44)) Array ([0] => StdClass Object ([friend_user_id] => 57))

заранее спасибо за любую помощь!

+0

Вы уверены, что она должна быть $ FFID = $ wpdb-> get_results ($ SQL1), а не $ FFID. = $ Wpdb-> get_results ($ SQL1)?(конкатенация) – Maximus2012

ответ

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

Это выглядит наиболее перспективным до сих пор .... –

+0

спасибо за ваше предложение - я думаю, что это определенно поставило меня в правильном направлении. Я редактировал исходный вопрос сейчас, чтобы отразить, как я пытался реализовать это. –

+0

Я смущен вашим правлением. Отложенный фрагмент, который я только что добавил, нужно добавить внизу после '$ excluded_user = array_diff ($ users, $ result); // разделенные запятыми идентификаторы пользователей, которых вы хотите исключить. 'Он принимает текущий результат, который вы имели в $ excluded_user, и форматирует его до нужного вам результата. –

1

Для этой цели вы можете использовать implode(). Эта функция будет разделять массив, используя указанную вами строку. Проверьте этот reference Используйте приведенный ниже код

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

Надеется, что это помогает вам

+0

, который также дает ошибку Объект класса stdClass не может быть преобразован в строку –

Смежные вопросы