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


How can I convert an array of strings to an array of integers?

我当前的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变量。希望能有所帮助!