1

我目前有 var:$_REQUEST['fb_friend_uid']这给了我以下输出:

Array{"returned_val":["47483647","47483647","47483647","665414807","263901486","665414807","665414807","665414807"]}

我希望将此处的数据保存到一个新数组中,该数组仅包含以下格式的数字;47483647, 47483647, etc

目标是在 sql 查询中使用它,如下所示:

SELECT * FROM vote WHERE
vote_fb_uid IN ($myNumbers)

将其保存到我认为可以这样完成的新数组中:

foreach ($_REQUEST['fb_friend_uid'] as $uid) {
    $uids[] = $uid['id'];
}

$ids = join(',', $uids); 

但是我的问题仍然存在,如何“清理”第一个 var 以仅包含数字。建议?

4

4 回答 4

1

只需使用is_numeric过滤数组:

$uids =  array_filter($_REQUEST['fb_friend_uid'], 'is_numeric');
于 2013-05-28T22:30:37.607 回答
1

我不能给你一个确切的解决方案,因为我不确定返回的值是$_REQUEST['fb_friend_uid']使用 打印的 PHP 数组json_encode(),还是该值实际上是一个 json 字符串。

在任何一种情况下,哪里都有一个使用这两种情况的示例,因此请使用在您的场景中有意义的任何一个:

如果 PHP 数组:

假设 PHP 数组的格式类似于:

array('returned_val' => array('47483647', '47483647', '47483647', '665414807', '263901486', '665414807', '665414807', '665414807'));

<?php
$original_arr = $_REQUEST['fb_friend_uid']['returned_val'];

如果 JSON 字符串:

假设 JSON 字符串的格式类似于:

{"returned_val":["47483647","47483647","47483647","665414807","263901486","665414807","665414807","665414807"]}

<?php
$json_arr = json_decode($_REQUEST['fb_friend_uid'], True);
$original_arr = $json_arr['returned_val'];

然后,使用以下代码:

<?php
// Extract only whole number values, omit anything which is not a 0-9 character.
$filtered_arr = array_filter($original_arr, 'ctype_digit');

// Escape values to remove possibility of SQL injection.
$filtered_arr = array_map('mysql_real_escape_string', $filtered_arr);

// Convert the array to a string
$string_arr = "'" . implode("','", $filtered_arr) . "'";

// Perform SQL Query
mysql_query("SELECT * FROM vote WHERE vote_fb_uid IN ($string_arr)");
于 2013-05-28T22:23:45.930 回答
0

要过滤数字,您可以使用is_numeric(mixed $var)

但是,如果您需要更多控制(仅特定类型、长度的整数),您可以使用 REGEX 或 is_numeric 和一些 ifs。

于 2013-05-28T22:21:46.207 回答
-3

这看起来像一个 json 字符串,所以使用http://php.net/json_decode

也许您需要Array在开头删除(但我不知道 Array 在变量中是否实际存在),请使用http://php.net/substr

$jsonString = substr($_REQUEST['fb_friend_uid'], 5);
$fb_friend_uid = json_decode($jsonString);
$ids = join(',', $fb_friend_uid['returned_val']);
于 2013-05-28T22:17:52.940 回答