如何将字符串数组转换为整数数组?

时间:2012-02-04 17:53:24

标签: php sql int apple-push-notifications

我使用当前的PHP代码收到此错误:

  

注意:TO id不是整数:1,2。1)APNS :: queueMessage - >

如何将字符串数组转换为整数数组,就像在另一个问题中一样:ID not integer... EasyAPNS

我基本上试图将id s(从我的数据库中)传递给newMessage(),例如Apple示例:

// SEND MESSAGE TO MORE THAN ONE USER
// $apns->newMessage(array(1,3,4,5,8,15,16)); 
// ($destination contain a string with the Ids like "1,2,3")

以下是我的代码:

if (isset($destination))
{
    //$destination = 1,2,.. 
    $dest = explode(",", $destination);
    if (isset($time))
    {
        $apns->newMessage($dest, $time);
    }
    else
    {
        $apns->newMessage($dest);
    }

    $apns->addMessageAlert($message);
    $apns->addMessageBadge($badge);
    $apns->addMessageSound('bingbong.aiff');
    $apns->queueMessage();
    header("location:$url/index.php?success=1");
}

3 个答案:

答案 0 :(得分:1)

我会创建一个接受数组的包装函数,然后调用它。

function newMessageArray($array) {
    foreach ($array as $element) {
        $apns->newMessage($element);
    }
}

这样,您可以使用整数数组调用newMessageArray(),例如array(1,2,3,4,5),这些都将被发送。

此外,您应该将变量名称(从$array$element)更改为更有意义的名称。我不知道你要做什么,所以我不确定要使用什么名字。

答案 1 :(得分:0)

您的问题不明确,这只是猜测工作。 转换整数似乎是错误,请尝试

$dest = explode(",", $destination);
$destArray = array();
foreach($dest as $key => $val) {
  $destArray[$key] = intval($val);
}

if (isset($time))
{
    $apns->newMessage($destArray, $time);
}
else
{
    $apns->newMessage($destArray);
}

使用'intval'转换字符串不是整数的位置。

答案 2 :(得分:0)

我相信你可能正在寻找的是如何做到这一点:

您的数据库表中有id个,对吗?并且您试图将多个id s放入一个数组中,以便可以在$apns->newMessage()调用中使用该数组,对吧? (我已经检查the source了......)但是,idstring而不是int s的形式出现。

所以,您可能只想确保新数组由int组成,如下所示:

function to_int($x) {
    return (int)$x;
}

$dest = array_map("to_int", $dest);

可能有其他方法可以做到这一点,但是这样,你至少知道你在该数组中有int变量。希望有所帮助!