如何仅将数字从数组保存到新数组中

时间:2013-05-28 22:15:16

标签: php arrays foreach

我目前有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 个答案:

答案 0 :(得分:1)

我无法为您提供完全解决方案,因为我不确定$_REQUEST['fb_friend_uid']返回的值是否是使用json_encode()打印的PHP数组,或者value实际上是一个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)");

答案 1 :(得分:1)

只需使用is_numeric过滤数组:

$uids =  array_filter($_REQUEST['fb_friend_uid'], 'is_numeric');

答案 2 :(得分:0)

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

但是如果你需要更多控制(只有某种类型,长度的整数),你可以使用REGEX或is_numeric和一些ifs。

答案 3 :(得分:-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']);