我使用当前的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");
}
答案 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了......)但是,id
以string
而不是int
s的形式出现。
所以,您可能只想确保新数组由int
组成,如下所示:
function to_int($x) {
return (int)$x;
}
$dest = array_map("to_int", $dest);
可能有其他方法可以做到这一点,但是这样,你至少知道你在该数组中有int变量。希望有所帮助!