Как я могу преобразовать массив строк в массив целых чисел? - PullRequest
0 голосов
/ 04 февраля 2012

Я получаю эту ошибку с моим текущим кодом PHP:

Примечание: идентификатор не является целым числом: 1, 2. 1) APNS :: queueMessage ->

Как я могу преобразовать в массив строк в массив целых чисел, как в этом другом вопросе: ID не целое число ... 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 ]

1 голос
/ 04 февраля 2012

Я хотел бы создать функцию-оболочку, которая принимает массив, а затем вызывать ее.

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

Таким образом, вы можете вызвать newMessageArray() с массивом целых чисел, таким как array(1,2,3,4,5), и все они будут отправлены.

Кроме того, вы должны изменить имена переменных (с $array и $element) на более значимые. Я не знаю, что вы пытаетесь сделать, поэтому я не знал, какие имена использовать.

0 голосов
/ 04 февраля 2012

Я верю, что вы можете искать, как это сделать:

У вас есть id s в таблице базы данных, верно? И вы пытаетесь получить несколько id s в массив, чтобы массив можно было использовать при вызове $apns->newMessage(), верно? (Я проверил источник для этого ...) Но, id s почему-то приходят как string s вместо int s.

Итак, вы, вероятно, хотите просто убедиться, что новый массив состоит из int s, например:

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

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

Возможно, есть другие способы сделать это, но таким образом, вы, по крайней мере, знаете, что в этом массиве есть переменные типа int. Надеюсь, это поможет!

0 голосов
/ 04 февраля 2012

Ваш вопрос не ясен, это всего лишь догадка. Кажется, ошибка в конвертировании целых чисел, попробуйте

$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'.

...