数组变量转换为另一个函数变量

Array variable into another function variable

我有以下 PHP 函数来获取一些 user_ids 然后我想将其作为收件人添加到消息中,如下所示。

function true_my_bp_get_users_by_xprofile( $field_id_to_check, $num_to_find ) {
global $wpdb;


$table_name = $wpdb->prefix . "bp_xprofile_data";

$user_ids = $wpdb->get_results( 
     $wpdb->prepare( 
        "SELECT user_id FROM $table_name 
                 WHERE field_id = %d AND value LIKE '%%\"%d\"%%'", 
        $field_id_to_check,
        $num_to_find
    )
);
print_r($user_ids);
}

我正在使用 true_my_bp_get_users_by_xprofile( 5, 18 ); 打印 Array ( [0] => stdClass Object ( [user_id] => 1 ) [1] => stdClass Object ( [user_id] => 2 ) )

然后我有一个 HTML 表单,代码如下:

$body_input=isset($_POST['body_input'])?$_POST['body_input']:'';
$subject_input=isset($_POST['subject_input'])?$_POST['subject_input']:'';

send_msg( $user_ids,$body_input, $subject_input);

send_msg

function send_msg($user_id, $title, $message){
$args = array( 'recipients' => $user_id, 'sender_id' => bp_loggedin_user_id(), 'subject' => $title, 'content' => $message );
messages_new_message( $args );
}

我想做的事情:

$user_ids中取出数组并放在这里:'recipients' => $user_id

我尝试在函数中用 $user_ids 替换 $user_id 但它不起作用。

由于您将数据放入函数内的 $user_ids 变量中,因此其范围仅限于该函数。可以通过几种不同的方式在函数外部存储和访问数据。

1).通过引用将变量传递给 true_my_bp_get_users_by_xprofile

$user_ids = null;

function true_my_bp_get_users_by_xprofile( $field_id_to_check, $num_to_find, &$user_ids ) {
    global $wpdb;
    $table_name = $wpdb->prefix . "bp_xprofile_data";

    $user_ids = $wpdb->get_results( 
         $wpdb->prepare( 
            "SELECT user_id FROM $table_name 
                     WHERE field_id = %d AND value LIKE '%%\"%d\"%%'", 
            $field_id_to_check,
            $num_to_find
        )
    );
    print_r($user_ids);
}

调用函数

true_my_bp_get_users_by_xprofile( 5, 18, $user_ids );

现在您的 $user_ids 拥有数据并且可以在函数外访问。

2). Return 来自 true_my_bp_get_users_by_xprofile 函数的 $user_ids

function true_my_bp_get_users_by_xprofile( $field_id_to_check, $num_to_find ) {
    global $wpdb;
    $table_name = $wpdb->prefix . "bp_xprofile_data";

    $user_ids = $wpdb->get_results( 
         $wpdb->prepare( 
            "SELECT user_id FROM $table_name 
                     WHERE field_id = %d AND value LIKE '%%\"%d\"%%'", 
            $field_id_to_check,
            $num_to_find
        )
    );
    print_r($user_ids);

    return $user_ids;
}

像这样调用函数 $user_ids = true_my_bp_get_users_by_xprofile( 5, 18 );

现在,您可以调用 send_msg 函数,就像您在上面的代码中所做的那样,即

send_msg( $user_ids, $body_input, $subject_input);