我当前的PHP代码出现了这个错误:
注意:TO id不是整数:1,2。1) APNS::queueMessage->
我如何将字符串数组转换为整数数组,就像在另一个问题中一样:ID不是整数。。。EasyAPNS?
我基本上是想把id
s(从我的数据库)传递给newMessage()
,就像这个苹果的例子:
// 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");
}
我会创建一个接受数组的包装函数,然后调用它。
function newMessageArray($array) {
foreach ($array as $element) {
$apns->newMessage($element);
}
}
通过这种方式,您可以使用整数数组(如array(1,2,3,4,5)
)调用newMessageArray()
,它们都将被发送。
此外,您应该将变量名(从$array
和$element
)更改为更有意义的名称。我不知道你想做什么,所以我不知道该用什么名字。
你的问题不清楚,只是猜测。转换整数时似乎有错误,请尝试
$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"转换字符串不是整数的位置。
我相信您可能正在寻找的是如何做到这一点:
您的数据库表中有id
,对吗?您正试图将多个id
放入一个数组中,以便在$apns->newMessage()
调用中使用该数组,对吗?(我检查了来源…)但是,id
s不知怎么变成了string
s,而不是int
s。
因此,您可能只想确保新阵列由int
组成,如下所示:
function to_int($x) {
return (int)$x;
}
$dest = array_map("to_int", $dest);
可能还有其他方法可以做到这一点,但通过这种方式,您至少知道该数组中有int变量。希望能有所帮助!